1For all of the nmem device attributes under nfit/*, see the 'NVDIMM Firmware
2Interface Table (NFIT)' section in the ACPI specification
3(http://www.uefi.org/specifications) for more details.
4
5What:		/sys/bus/nd/devices/nmemX/nfit/serial
6Date:		Jun, 2015
7KernelVersion:	v4.2
8Contact:	linux-nvdimm@lists.01.org
9Description:
10		(RO) Serial number of the NVDIMM (non-volatile dual in-line
11		memory module), assigned by the module vendor.
12
13
14What:		/sys/bus/nd/devices/nmemX/nfit/handle
15Date:		Apr, 2015
16KernelVersion:	v4.2
17Contact:	linux-nvdimm@lists.01.org
18Description:
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.
21
22
23What:		/sys/bus/nd/devices/nmemX/nfit/device
24Date:		Apr, 2015
25KernelVersion:	v4.1
26Contact:	linux-nvdimm@lists.01.org
27Description:
28		(RO) Device id for the NVDIMM, assigned by the module vendor.
29
30
31What:		/sys/bus/nd/devices/nmemX/nfit/rev_id
32Date:		Jun, 2015
33KernelVersion:	v4.2
34Contact:	linux-nvdimm@lists.01.org
35Description:
36		(RO) Revision of the NVDIMM, assigned by the module vendor.
37
38
39What:		/sys/bus/nd/devices/nmemX/nfit/phys_id
40Date:		Apr, 2015
41KernelVersion:	v4.2
42Contact:	linux-nvdimm@lists.01.org
43Description:
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.
47
48
49What:		/sys/bus/nd/devices/nmemX/nfit/flags
50Date:		Jun, 2015
51KernelVersion:	v4.2
52Contact:	linux-nvdimm@lists.01.org
53Description:
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".
57
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.
61
62		The health states are "save_fail", "restore_fail", "flush_fail",
63		"not_armed", "smart_event", "map_fail" and "smart_notify".
64
65
66What:		/sys/bus/nd/devices/nmemX/nfit/format
67What:		/sys/bus/nd/devices/nmemX/nfit/format1
68What:		/sys/bus/nd/devices/nmemX/nfit/formats
69Date:		Apr, 2016
70KernelVersion:	v4.7
71Contact:	linux-nvdimm@lists.01.org
72Description:
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
77		interfaces.
78
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.
82
83
84What:		/sys/bus/nd/devices/nmemX/nfit/vendor
85Date:		Apr, 2016
86KernelVersion:	v4.7
87Contact:	linux-nvdimm@lists.01.org
88Description:
89		(RO) Vendor id of the NVDIMM.
90
91
92What:		/sys/bus/nd/devices/nmemX/nfit/dsm_mask
93Date:		May, 2016
94KernelVersion:	v4.7
95Contact:	linux-nvdimm@lists.01.org
96Description:
97		(RO) The bitmask indicates the supported device specific control
98		functions relative to the NVDIMM command family supported by the
99		device
100
101
102What:		/sys/bus/nd/devices/nmemX/nfit/family
103Date:		Apr, 2016
104KernelVersion:	v4.7
105Contact:	linux-nvdimm@lists.01.org
106Description:
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
110		respectively.
111
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"
116
117
118What:		/sys/bus/nd/devices/nmemX/nfit/id
119Date:		Apr, 2016
120KernelVersion:	v4.7
121Contact:	linux-nvdimm@lists.01.org
122Description:
123		(RO) ACPI specification 6.2 section 5.2.25.9, defines an
124		identifier for an NVDIMM, which refelects the id attribute.
125
126
127What:		/sys/bus/nd/devices/nmemX/nfit/subsystem_vendor
128Date:		Apr, 2016
129KernelVersion:	v4.7
130Contact:	linux-nvdimm@lists.01.org
131Description:
132		(RO) Sub-system vendor id of the NVDIMM non-volatile memory
133		subsystem controller.
134
135
136What:		/sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id
137Date:		Apr, 2016
138KernelVersion:	v4.7
139Contact:	linux-nvdimm@lists.01.org
140Description:
141		(RO) Sub-system revision id of the NVDIMM non-volatile memory subsystem
142		controller, assigned by the non-volatile memory subsystem
143		controller vendor.
144
145
146What:		/sys/bus/nd/devices/nmemX/nfit/subsystem_device
147Date:		Apr, 2016
148KernelVersion:	v4.7
149Contact:	linux-nvdimm@lists.01.org
150Description:
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.
154
155
156What:		/sys/bus/nd/devices/ndbusX/nfit/revision
157Date:		Jun, 2015
158KernelVersion:	v4.2
159Contact:	linux-nvdimm@lists.01.org
160Description:
161		(RO) ACPI NFIT table revision number.
162
163
164What:		/sys/bus/nd/devices/ndbusX/nfit/scrub
165Date:		Sep, 2016
166KernelVersion:	v4.9
167Contact:	linux-nvdimm@lists.01.org
168Description:
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
173
174		Writing a value of 1 triggers an ARS scan.
175
176
177What:		/sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub
178Date:		Sep, 2016
179KernelVersion:	v4.9
180Contact:	linux-nvdimm@lists.01.org
181Description:
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.
186
187		This attribute can have the following values written to it:
188
189		'0': Switch to the default mode where an exception will only
190		insert the address of the memory error into the poison and
191		badblocks lists.
192		'1': Enable a full scrub to happen if an exception for a memory
193		error is received.
194
195
196What:		/sys/bus/nd/devices/ndbusX/nfit/dsm_mask
197Date:		Jun, 2017
198KernelVersion:	v4.13
199Contact:	linux-nvdimm@lists.01.org
200Description:
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.
204
205
206What:		/sys/bus/nd/devices/regionX/nfit/range_index
207Date:		Jun, 2015
208KernelVersion:	v4.2
209Contact:	linux-nvdimm@lists.01.org
210Description:
211		(RO) A unique number provided by the BIOS to identify an address
212		range. Used by NVDIMM Region Mapping Structure to uniquely refer
213		to this structure. Value of 0 is reserved and not used as an
214		index.
215
216
217What:		/sys/bus/nd/devices/regionX/nfit/ecc_unit_size
218Date:		Aug, 2017
219KernelVersion:	v4.14
220Contact:	linux-nvdimm@lists.01.org
221Description:
222		(RO) Size of a write request to a DIMM that will not incur a
223		read-modify-write cycle at the memory controller.
224
225		When the nfit driver initializes it runs an ARS (Address Range
226		Scrub) operation across every pmem range. Part of that process
227		involves determining the ARS capabilities of a given address
228		range. One of the capabilities that is reported is the 'Clear
229		Uncorrectable Error Range Length Unit Size' (see: ACPI 6.2
230		section 9.20.7.4 Function Index 1 - Query ARS Capabilities).
231		This property indicates the boundary at which the NVDIMM may
232		need to perform read-modify-write cycles to maintain ECC (Error
233		Correcting Code) blocks.
234