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 205What: /sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle 206Date: Apr, 2020 207KernelVersion: v5.8 208Contact: linux-nvdimm@lists.01.org 209Description: 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. 224 225What: /sys/bus/nd/devices/regionX/nfit/range_index 226Date: Jun, 2015 227KernelVersion: v4.2 228Contact: linux-nvdimm@lists.01.org 229Description: 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 233 index. 234