1 For all of the nmem device attributes under ``nfit/*``, see the 'NVDIMM Firmware
2 Interface Table (NFIT)' section in the ACPI specification
3 (http://www.uefi.org/specifications) for more details.
5 What: /sys/bus/nd/devices/nmemX/nfit/serial
8 Contact: linux-nvdimm@lists.01.org
10 (RO) Serial number of the NVDIMM (non-volatile dual in-line
11 memory module), assigned by the module vendor.
14 What: /sys/bus/nd/devices/nmemX/nfit/handle
17 Contact: linux-nvdimm@lists.01.org
19 (RO) The address (given by the _ADR object) of the device on its
20 parent bus of the NVDIMM device containing the NVDIMM region.
23 What: /sys/bus/nd/devices/nmemX/nfit/device
26 Contact: linux-nvdimm@lists.01.org
28 (RO) Device id for the NVDIMM, assigned by the module vendor.
31 What: /sys/bus/nd/devices/nmemX/nfit/rev_id
34 Contact: linux-nvdimm@lists.01.org
36 (RO) Revision of the NVDIMM, assigned by the module vendor.
39 What: /sys/bus/nd/devices/nmemX/nfit/phys_id
42 Contact: linux-nvdimm@lists.01.org
44 (RO) Handle (i.e., instance number) for the SMBIOS (system
45 management BIOS) Memory Device structure describing the NVDIMM
46 containing the NVDIMM region.
49 What: /sys/bus/nd/devices/nmemX/nfit/flags
52 Contact: linux-nvdimm@lists.01.org
54 (RO) The flags in the NFIT memory device sub-structure indicate
55 the state of the data on the nvdimm relative to its energy
56 source or last "flush to persistence".
58 The attribute is a translation of the 'NVDIMM State Flags' field
59 in section 5.2.25.3 'NVDIMM Region Mapping' Structure of the
60 ACPI specification 6.2.
62 The health states are "save_fail", "restore_fail", "flush_fail",
63 "not_armed", "smart_event", "map_fail" and "smart_notify".
66 What: /sys/bus/nd/devices/nmemX/nfit/format
67 What: /sys/bus/nd/devices/nmemX/nfit/format1
68 What: /sys/bus/nd/devices/nmemX/nfit/formats
71 Contact: linux-nvdimm@lists.01.org
73 (RO) The interface codes indicate support for persistent memory
74 mapped directly into system physical address space and / or a
75 block aperture access mechanism to the NVDIMM media.
76 The 'formats' attribute displays the number of supported
79 This layout is compatible with existing libndctl binaries that
80 only expect one code per-dimm as they will ignore
81 nmemX/nfit/formats and nmemX/nfit/formatN.
84 What: /sys/bus/nd/devices/nmemX/nfit/vendor
87 Contact: linux-nvdimm@lists.01.org
89 (RO) Vendor id of the NVDIMM.
92 What: /sys/bus/nd/devices/nmemX/nfit/dsm_mask
95 Contact: linux-nvdimm@lists.01.org
97 (RO) The bitmask indicates the supported device specific control
98 functions relative to the NVDIMM command family supported by the
102 What: /sys/bus/nd/devices/nmemX/nfit/family
105 Contact: linux-nvdimm@lists.01.org
107 (RO) Displays the NVDIMM family command sets. Values
108 0, 1, 2 and 3 correspond to NVDIMM_FAMILY_INTEL,
109 NVDIMM_FAMILY_HPE1, NVDIMM_FAMILY_HPE2 and NVDIMM_FAMILY_MSFT
112 See the specifications for these command families here:
113 http://pmem.io/documents/NVDIMM_DSM_Interface-V1.6.pdf
114 https://github.com/HewlettPackard/hpe-nvm/blob/master/Documentation/
115 https://msdn.microsoft.com/library/windows/hardware/mt604741"
118 What: /sys/bus/nd/devices/nmemX/nfit/id
121 Contact: linux-nvdimm@lists.01.org
123 (RO) ACPI specification 6.2 section 5.2.25.9, defines an
124 identifier for an NVDIMM, which refelects the id attribute.
127 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_vendor
130 Contact: linux-nvdimm@lists.01.org
132 (RO) Sub-system vendor id of the NVDIMM non-volatile memory
133 subsystem controller.
136 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id
139 Contact: linux-nvdimm@lists.01.org
141 (RO) Sub-system revision id of the NVDIMM non-volatile memory subsystem
142 controller, assigned by the non-volatile memory subsystem
146 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_device
149 Contact: linux-nvdimm@lists.01.org
151 (RO) Sub-system device id for the NVDIMM non-volatile memory
152 subsystem controller, assigned by the non-volatile memory
153 subsystem controller vendor.
156 What: /sys/bus/nd/devices/ndbusX/nfit/revision
159 Contact: linux-nvdimm@lists.01.org
161 (RO) ACPI NFIT table revision number.
164 What: /sys/bus/nd/devices/ndbusX/nfit/scrub
167 Contact: linux-nvdimm@lists.01.org
169 (RW) This shows the number of full Address Range Scrubs (ARS)
170 that have been completed since driver load time. Userspace can
171 wait on this using select/poll etc. A '+' at the end indicates
172 an ARS is in progress
174 Writing a value of 1 triggers an ARS scan.
177 What: /sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub
180 Contact: linux-nvdimm@lists.01.org
182 (RW) Provides a way to toggle the behavior between just adding
183 the address (cache line) where the MCE happened to the poison
184 list and doing a full scrub. The former (selective insertion of
185 the address) is done unconditionally.
187 This attribute can have the following values written to it:
189 '0': Switch to the default mode where an exception will only
190 insert the address of the memory error into the poison and
192 '1': Enable a full scrub to happen if an exception for a memory
196 What: /sys/bus/nd/devices/ndbusX/nfit/dsm_mask
199 Contact: linux-nvdimm@lists.01.org
201 (RO) The bitmask indicates the supported bus specific control
202 functions. See the section named 'NVDIMM Root Device _DSMs' in
203 the ACPI specification.
205 What: /sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle
208 Contact: linux-nvdimm@lists.01.org
210 (RW) The Intel platform implementation of firmware activate
211 support exposes an option let the platform force idle devices in
212 the system over the activation event, or trust that the OS will
213 do it. The safe default is to let the platform force idle
214 devices since the kernel is already in a suspend state, and on
215 the chance that a driver does not properly quiesce bus-mastering
216 after a suspend callback the platform will handle it. However,
217 the activation might abort if, for example, platform firmware
218 determines that the activation time exceeds the max PCI-E
219 completion timeout. Since the platform does not know whether the
220 OS is running the activation from a suspend context it aborts,
221 but if the system owner trusts driver suspend callback to be
222 sufficient then 'firmware_activation_noidle' can be
223 enabled to bypass the activation abort.
225 What: /sys/bus/nd/devices/regionX/nfit/range_index
228 Contact: linux-nvdimm@lists.01.org
230 (RO) A unique number provided by the BIOS to identify an address
231 range. Used by NVDIMM Region Mapping Structure to uniquely refer
232 to this structure. Value of 0 is reserved and not used as an