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