1*014d8fd8SAishwarya PantFor all of the nmem device attributes under nfit/*, see the 'NVDIMM Firmware 2*014d8fd8SAishwarya PantInterface Table (NFIT)' section in the ACPI specification 3*014d8fd8SAishwarya Pant(http://www.uefi.org/specifications) for more details. 4*014d8fd8SAishwarya Pant 5*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/serial 6*014d8fd8SAishwarya PantDate: Jun, 2015 7*014d8fd8SAishwarya PantKernelVersion: v4.2 8*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 9*014d8fd8SAishwarya PantDescription: 10*014d8fd8SAishwarya Pant (RO) Serial number of the NVDIMM (non-volatile dual in-line 11*014d8fd8SAishwarya Pant memory module), assigned by the module vendor. 12*014d8fd8SAishwarya Pant 13*014d8fd8SAishwarya Pant 14*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/handle 15*014d8fd8SAishwarya PantDate: Apr, 2015 16*014d8fd8SAishwarya PantKernelVersion: v4.2 17*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 18*014d8fd8SAishwarya PantDescription: 19*014d8fd8SAishwarya Pant (RO) The address (given by the _ADR object) of the device on its 20*014d8fd8SAishwarya Pant parent bus of the NVDIMM device containing the NVDIMM region. 21*014d8fd8SAishwarya Pant 22*014d8fd8SAishwarya Pant 23*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/device 24*014d8fd8SAishwarya PantDate: Apr, 2015 25*014d8fd8SAishwarya PantKernelVersion: v4.1 26*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 27*014d8fd8SAishwarya PantDescription: 28*014d8fd8SAishwarya Pant (RO) Device id for the NVDIMM, assigned by the module vendor. 29*014d8fd8SAishwarya Pant 30*014d8fd8SAishwarya Pant 31*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/rev_id 32*014d8fd8SAishwarya PantDate: Jun, 2015 33*014d8fd8SAishwarya PantKernelVersion: v4.2 34*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 35*014d8fd8SAishwarya PantDescription: 36*014d8fd8SAishwarya Pant (RO) Revision of the NVDIMM, assigned by the module vendor. 37*014d8fd8SAishwarya Pant 38*014d8fd8SAishwarya Pant 39*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/phys_id 40*014d8fd8SAishwarya PantDate: Apr, 2015 41*014d8fd8SAishwarya PantKernelVersion: v4.2 42*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 43*014d8fd8SAishwarya PantDescription: 44*014d8fd8SAishwarya Pant (RO) Handle (i.e., instance number) for the SMBIOS (system 45*014d8fd8SAishwarya Pant management BIOS) Memory Device structure describing the NVDIMM 46*014d8fd8SAishwarya Pant containing the NVDIMM region. 47*014d8fd8SAishwarya Pant 48*014d8fd8SAishwarya Pant 49*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/flags 50*014d8fd8SAishwarya PantDate: Jun, 2015 51*014d8fd8SAishwarya PantKernelVersion: v4.2 52*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 53*014d8fd8SAishwarya PantDescription: 54*014d8fd8SAishwarya Pant (RO) The flags in the NFIT memory device sub-structure indicate 55*014d8fd8SAishwarya Pant the state of the data on the nvdimm relative to its energy 56*014d8fd8SAishwarya Pant source or last "flush to persistence". 57*014d8fd8SAishwarya Pant 58*014d8fd8SAishwarya Pant The attribute is a translation of the 'NVDIMM State Flags' field 59*014d8fd8SAishwarya Pant in section 5.2.25.3 'NVDIMM Region Mapping' Structure of the 60*014d8fd8SAishwarya Pant ACPI specification 6.2. 61*014d8fd8SAishwarya Pant 62*014d8fd8SAishwarya Pant The health states are "save_fail", "restore_fail", "flush_fail", 63*014d8fd8SAishwarya Pant "not_armed", "smart_event", "map_fail" and "smart_notify". 64*014d8fd8SAishwarya Pant 65*014d8fd8SAishwarya Pant 66*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/format 67*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/format1 68*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/formats 69*014d8fd8SAishwarya PantDate: Apr, 2016 70*014d8fd8SAishwarya PantKernelVersion: v4.7 71*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 72*014d8fd8SAishwarya PantDescription: 73*014d8fd8SAishwarya Pant (RO) The interface codes indicate support for persistent memory 74*014d8fd8SAishwarya Pant mapped directly into system physical address space and / or a 75*014d8fd8SAishwarya Pant block aperture access mechanism to the NVDIMM media. 76*014d8fd8SAishwarya Pant The 'formats' attribute displays the number of supported 77*014d8fd8SAishwarya Pant interfaces. 78*014d8fd8SAishwarya Pant 79*014d8fd8SAishwarya Pant This layout is compatible with existing libndctl binaries that 80*014d8fd8SAishwarya Pant only expect one code per-dimm as they will ignore 81*014d8fd8SAishwarya Pant nmemX/nfit/formats and nmemX/nfit/formatN. 82*014d8fd8SAishwarya Pant 83*014d8fd8SAishwarya Pant 84*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/vendor 85*014d8fd8SAishwarya PantDate: Apr, 2016 86*014d8fd8SAishwarya PantKernelVersion: v4.7 87*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 88*014d8fd8SAishwarya PantDescription: 89*014d8fd8SAishwarya Pant (RO) Vendor id of the NVDIMM. 90*014d8fd8SAishwarya Pant 91*014d8fd8SAishwarya Pant 92*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/dsm_mask 93*014d8fd8SAishwarya PantDate: May, 2016 94*014d8fd8SAishwarya PantKernelVersion: v4.7 95*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 96*014d8fd8SAishwarya PantDescription: 97*014d8fd8SAishwarya Pant (RO) The bitmask indicates the supported device specific control 98*014d8fd8SAishwarya Pant functions relative to the NVDIMM command family supported by the 99*014d8fd8SAishwarya Pant device 100*014d8fd8SAishwarya Pant 101*014d8fd8SAishwarya Pant 102*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/family 103*014d8fd8SAishwarya PantDate: Apr, 2016 104*014d8fd8SAishwarya PantKernelVersion: v4.7 105*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 106*014d8fd8SAishwarya PantDescription: 107*014d8fd8SAishwarya Pant (RO) Displays the NVDIMM family command sets. Values 108*014d8fd8SAishwarya Pant 0, 1, 2 and 3 correspond to NVDIMM_FAMILY_INTEL, 109*014d8fd8SAishwarya Pant NVDIMM_FAMILY_HPE1, NVDIMM_FAMILY_HPE2 and NVDIMM_FAMILY_MSFT 110*014d8fd8SAishwarya Pant respectively. 111*014d8fd8SAishwarya Pant 112*014d8fd8SAishwarya Pant See the specifications for these command families here: 113*014d8fd8SAishwarya Pant http://pmem.io/documents/NVDIMM_DSM_Interface-V1.6.pdf 114*014d8fd8SAishwarya Pant https://github.com/HewlettPackard/hpe-nvm/blob/master/Documentation/ 115*014d8fd8SAishwarya Pant https://msdn.microsoft.com/library/windows/hardware/mt604741" 116*014d8fd8SAishwarya Pant 117*014d8fd8SAishwarya Pant 118*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/id 119*014d8fd8SAishwarya PantDate: Apr, 2016 120*014d8fd8SAishwarya PantKernelVersion: v4.7 121*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 122*014d8fd8SAishwarya PantDescription: 123*014d8fd8SAishwarya Pant (RO) ACPI specification 6.2 section 5.2.25.9, defines an 124*014d8fd8SAishwarya Pant identifier for an NVDIMM, which refelects the id attribute. 125*014d8fd8SAishwarya Pant 126*014d8fd8SAishwarya Pant 127*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/subsystem_vendor 128*014d8fd8SAishwarya PantDate: Apr, 2016 129*014d8fd8SAishwarya PantKernelVersion: v4.7 130*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 131*014d8fd8SAishwarya PantDescription: 132*014d8fd8SAishwarya Pant (RO) Sub-system vendor id of the NVDIMM non-volatile memory 133*014d8fd8SAishwarya Pant subsystem controller. 134*014d8fd8SAishwarya Pant 135*014d8fd8SAishwarya Pant 136*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id 137*014d8fd8SAishwarya PantDate: Apr, 2016 138*014d8fd8SAishwarya PantKernelVersion: v4.7 139*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 140*014d8fd8SAishwarya PantDescription: 141*014d8fd8SAishwarya Pant (RO) Sub-system revision id of the NVDIMM non-volatile memory subsystem 142*014d8fd8SAishwarya Pant controller, assigned by the non-volatile memory subsystem 143*014d8fd8SAishwarya Pant controller vendor. 144*014d8fd8SAishwarya Pant 145*014d8fd8SAishwarya Pant 146*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/nmemX/nfit/subsystem_device 147*014d8fd8SAishwarya PantDate: Apr, 2016 148*014d8fd8SAishwarya PantKernelVersion: v4.7 149*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 150*014d8fd8SAishwarya PantDescription: 151*014d8fd8SAishwarya Pant (RO) Sub-system device id for the NVDIMM non-volatile memory 152*014d8fd8SAishwarya Pant subsystem controller, assigned by the non-volatile memory 153*014d8fd8SAishwarya Pant subsystem controller vendor. 154*014d8fd8SAishwarya Pant 155*014d8fd8SAishwarya Pant 156*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/ndbusX/nfit/revision 157*014d8fd8SAishwarya PantDate: Jun, 2015 158*014d8fd8SAishwarya PantKernelVersion: v4.2 159*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 160*014d8fd8SAishwarya PantDescription: 161*014d8fd8SAishwarya Pant (RO) ACPI NFIT table revision number. 162*014d8fd8SAishwarya Pant 163*014d8fd8SAishwarya Pant 164*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/ndbusX/nfit/scrub 165*014d8fd8SAishwarya PantDate: Sep, 2016 166*014d8fd8SAishwarya PantKernelVersion: v4.9 167*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 168*014d8fd8SAishwarya PantDescription: 169*014d8fd8SAishwarya Pant (RW) This shows the number of full Address Range Scrubs (ARS) 170*014d8fd8SAishwarya Pant that have been completed since driver load time. Userspace can 171*014d8fd8SAishwarya Pant wait on this using select/poll etc. A '+' at the end indicates 172*014d8fd8SAishwarya Pant an ARS is in progress 173*014d8fd8SAishwarya Pant 174*014d8fd8SAishwarya Pant Writing a value of 1 triggers an ARS scan. 175*014d8fd8SAishwarya Pant 176*014d8fd8SAishwarya Pant 177*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub 178*014d8fd8SAishwarya PantDate: Sep, 2016 179*014d8fd8SAishwarya PantKernelVersion: v4.9 180*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 181*014d8fd8SAishwarya PantDescription: 182*014d8fd8SAishwarya Pant (RW) Provides a way to toggle the behavior between just adding 183*014d8fd8SAishwarya Pant the address (cache line) where the MCE happened to the poison 184*014d8fd8SAishwarya Pant list and doing a full scrub. The former (selective insertion of 185*014d8fd8SAishwarya Pant the address) is done unconditionally. 186*014d8fd8SAishwarya Pant 187*014d8fd8SAishwarya Pant This attribute can have the following values written to it: 188*014d8fd8SAishwarya Pant 189*014d8fd8SAishwarya Pant '0': Switch to the default mode where an exception will only 190*014d8fd8SAishwarya Pant insert the address of the memory error into the poison and 191*014d8fd8SAishwarya Pant badblocks lists. 192*014d8fd8SAishwarya Pant '1': Enable a full scrub to happen if an exception for a memory 193*014d8fd8SAishwarya Pant error is received. 194*014d8fd8SAishwarya Pant 195*014d8fd8SAishwarya Pant 196*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/ndbusX/nfit/dsm_mask 197*014d8fd8SAishwarya PantDate: Jun, 2017 198*014d8fd8SAishwarya PantKernelVersion: v4.13 199*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 200*014d8fd8SAishwarya PantDescription: 201*014d8fd8SAishwarya Pant (RO) The bitmask indicates the supported bus specific control 202*014d8fd8SAishwarya Pant functions. See the section named 'NVDIMM Root Device _DSMs' in 203*014d8fd8SAishwarya Pant the ACPI specification. 204*014d8fd8SAishwarya Pant 205*014d8fd8SAishwarya Pant 206*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/regionX/nfit/range_index 207*014d8fd8SAishwarya PantDate: Jun, 2015 208*014d8fd8SAishwarya PantKernelVersion: v4.2 209*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 210*014d8fd8SAishwarya PantDescription: 211*014d8fd8SAishwarya Pant (RO) A unique number provided by the BIOS to identify an address 212*014d8fd8SAishwarya Pant range. Used by NVDIMM Region Mapping Structure to uniquely refer 213*014d8fd8SAishwarya Pant to this structure. Value of 0 is reserved and not used as an 214*014d8fd8SAishwarya Pant index. 215*014d8fd8SAishwarya Pant 216*014d8fd8SAishwarya Pant 217*014d8fd8SAishwarya PantWhat: /sys/bus/nd/devices/regionX/nfit/ecc_unit_size 218*014d8fd8SAishwarya PantDate: Aug, 2017 219*014d8fd8SAishwarya PantKernelVersion: v4.14 220*014d8fd8SAishwarya PantContact: linux-nvdimm@lists.01.org 221*014d8fd8SAishwarya PantDescription: 222*014d8fd8SAishwarya Pant (RO) Size of a write request to a DIMM that will not incur a 223*014d8fd8SAishwarya Pant read-modify-write cycle at the memory controller. 224*014d8fd8SAishwarya Pant 225*014d8fd8SAishwarya Pant When the nfit driver initializes it runs an ARS (Address Range 226*014d8fd8SAishwarya Pant Scrub) operation across every pmem range. Part of that process 227*014d8fd8SAishwarya Pant involves determining the ARS capabilities of a given address 228*014d8fd8SAishwarya Pant range. One of the capabilities that is reported is the 'Clear 229*014d8fd8SAishwarya Pant Uncorrectable Error Range Length Unit Size' (see: ACPI 6.2 230*014d8fd8SAishwarya Pant section 9.20.7.4 Function Index 1 - Query ARS Capabilities). 231*014d8fd8SAishwarya Pant This property indicates the boundary at which the NVDIMM may 232*014d8fd8SAishwarya Pant need to perform read-modify-write cycles to maintain ECC (Error 233*014d8fd8SAishwarya Pant Correcting Code) blocks. 234