← Documents Documentation/ABI/testing/sysfs-bus-nfit GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

ACPI NFIT device and bus attributes

NVDIMM의 NFIT 식별·health·interface·command family와 bus ARS scrub, hardware error 처리, firmware activation, region range index를 설명합니다.

Source pathDocumentation/ABI/testing/sysfs-bus-nfit
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

NVDIMM identity

sysfs-bus-nfit:1-48

serial, handle, device, rev_id, phys_id는 vendor·ACPI·SMBIOS가 제공하는 NVDIMM 식별 정보를 노출합니다.

State flags and interfaces

sysfs-bus-nfit:49-83

flags는 persistence와 energy source에 관련된 NVDIMM health 상태를, format 계열은 direct persistent-memory mapping 또는 block aperture interface 지원을 나타냅니다.

Vendor and command metadata

sysfs-bus-nfit:84-155

Vendor·subsystem 식별자, DSM function bitmask, command family, ACPI NVDIMM identifier를 읽기 전용으로 제공합니다.

ARS and firmware activation

sysfs-bus-nfit:156-224

NFIT bus revision과 DSM capability를 보고하고, Address Range Scrub 실행·hardware error scrub 정책·Intel firmware activation idle 정책을 제어합니다.

NFIT range identity

sysfs-bus-nfit:225-233

range_index는 BIOS가 address range에 부여한 고유 번호이며 0은 예약되어 index로 사용하지 않습니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
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.
4
5 What: /sys/bus/nd/devices/nmemX/nfit/serial
6 Date: Jun, 2015
7 KernelVersion: v4.2
8 Contact: nvdimm@lists.linux.dev
9 Description:
10 (RO) Serial number of the NVDIMM (non-volatile dual in-line
11 memory module), assigned by the module vendor.
12
13
14 What: /sys/bus/nd/devices/nmemX/nfit/handle
15 Date: Apr, 2015
16 KernelVersion: v4.2
17 Contact: nvdimm@lists.linux.dev
18 Description:
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
23 What: /sys/bus/nd/devices/nmemX/nfit/device
24 Date: Apr, 2015
25 KernelVersion: v4.1
26 Contact: nvdimm@lists.linux.dev
27 Description:
28 (RO) Device id for the NVDIMM, assigned by the module vendor.
29
30
31 What: /sys/bus/nd/devices/nmemX/nfit/rev_id
32 Date: Jun, 2015
33 KernelVersion: v4.2
34 Contact: nvdimm@lists.linux.dev
35 Description:
36 (RO) Revision of the NVDIMM, assigned by the module vendor.
37
38
39 What: /sys/bus/nd/devices/nmemX/nfit/phys_id
40 Date: Apr, 2015
41 KernelVersion: v4.2
42 Contact: nvdimm@lists.linux.dev
43 Description:
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
49 What: /sys/bus/nd/devices/nmemX/nfit/flags
50 Date: Jun, 2015
51 KernelVersion: v4.2
52 Contact: nvdimm@lists.linux.dev
53 Description:
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
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
69 Date: Apr, 2016
70 KernelVersion: v4.7
71 Contact: nvdimm@lists.linux.dev
72 Description:
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
84 What: /sys/bus/nd/devices/nmemX/nfit/vendor
85 Date: Apr, 2016
86 KernelVersion: v4.7
87 Contact: nvdimm@lists.linux.dev
88 Description:
89 (RO) Vendor id of the NVDIMM.
90
91
92 What: /sys/bus/nd/devices/nmemX/nfit/dsm_mask
93 Date: May, 2016
94 KernelVersion: v4.7
95 Contact: nvdimm@lists.linux.dev
96 Description:
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
102 What: /sys/bus/nd/devices/nmemX/nfit/family
103 Date: Apr, 2016
104 KernelVersion: v4.7
105 Contact: nvdimm@lists.linux.dev
106 Description:
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
118 What: /sys/bus/nd/devices/nmemX/nfit/id
119 Date: Apr, 2016
120 KernelVersion: v4.7
121 Contact: nvdimm@lists.linux.dev
122 Description:
123 (RO) ACPI specification 6.2 section 5.2.25.9, defines an
124 identifier for an NVDIMM, which reflects the id attribute.
125
126
127 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_vendor
128 Date: Apr, 2016
129 KernelVersion: v4.7
130 Contact: nvdimm@lists.linux.dev
131 Description:
132 (RO) Sub-system vendor id of the NVDIMM non-volatile memory
133 subsystem controller.
134
135
136 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id
137 Date: Apr, 2016
138 KernelVersion: v4.7
139 Contact: nvdimm@lists.linux.dev
140 Description:
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
146 What: /sys/bus/nd/devices/nmemX/nfit/subsystem_device
147 Date: Apr, 2016
148 KernelVersion: v4.7
149 Contact: nvdimm@lists.linux.dev
150 Description:
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
156 What: /sys/bus/nd/devices/ndbusX/nfit/revision
157 Date: Jun, 2015
158 KernelVersion: v4.2
159 Contact: nvdimm@lists.linux.dev
160 Description:
161 (RO) ACPI NFIT table revision number.
162
163
164 What: /sys/bus/nd/devices/ndbusX/nfit/scrub
165 Date: Sep, 2016
166 KernelVersion: v4.9
167 Contact: nvdimm@lists.linux.dev
168 Description:
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
177 What: /sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub
178 Date: Sep, 2016
179 KernelVersion: v4.9
180 Contact: nvdimm@lists.linux.dev
181 Description:
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
196 What: /sys/bus/nd/devices/ndbusX/nfit/dsm_mask
197 Date: Jun, 2017
198 KernelVersion: v4.13
199 Contact: nvdimm@lists.linux.dev
200 Description:
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 What: /sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle
206 Date: Apr, 2020
207 KernelVersion: v5.8
208 Contact: nvdimm@lists.linux.dev
209 Description:
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
225 What: /sys/bus/nd/devices/regionX/nfit/range_index
226 Date: Jun, 2015
227 KernelVersion: v4.2
228 Contact: nvdimm@lists.linux.dev
229 Description:
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

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

NFIT 참고 문서와 NVDIMM serial 번호

1-13

nfit/* 아래의 모든 nmem 장치 속성에 관한 자세한 내용은 ACPI specification의 'NVDIMM Firmware Interface Table (NFIT)' 절(http://www.uefi.org/specifications)을 참조하십시오.

항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/serial
Date2015년 6월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) Module vendor가 할당한 NVDIMM(non-volatile dual in-line memory module)의 serial 번호입니다.

NVDIMM parent bus address

14-22
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/handle
Date2015년 4월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) NVDIMM region을 포함하는 NVDIMM 장치가 parent bus에서 사용하는 address입니다. 이 address는 _ADR object가 제공합니다.

NVDIMM device ID

23-30
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/device
Date2015년 4월
KernelVersionv4.1
Contactnvdimm@lists.linux.dev
Description(RO) Module vendor가 할당한 NVDIMM device ID입니다.

NVDIMM revision

31-38
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/rev_id
Date2015년 6월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) Module vendor가 할당한 NVDIMM revision입니다.

SMBIOS Memory Device handle

39-48
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/phys_id
Date2015년 4월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) NVDIMM region을 포함하는 NVDIMM을 설명하는 SMBIOS(system management BIOS) Memory Device structure의 handle, 즉 instance 번호입니다.

NVDIMM health 상태 flag

49-65
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/flags
Date2015년 6월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) NFIT memory device 하위 structure의 flag는 energy source 또는 마지막 "flush to persistence"를 기준으로 NVDIMM 데이터의 상태를 나타냅니다. 이 속성은 ACPI specification 6.2의 5.2.25.3절 'NVDIMM Region Mapping' Structure에 있는 'NVDIMM State Flags' field를 변환한 것입니다.
Health 상태의미
save_fail저장 실패
restore_fail복원 실패
flush_failflush 실패
not_armedarmed 상태가 아님
smart_eventSMART event
map_failmapping 실패
smart_notifySMART notification

지원 NVDIMM media interface

66-83
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/format
What/sys/bus/nd/devices/nmemX/nfit/format1
What/sys/bus/nd/devices/nmemX/nfit/formats
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) Interface code는 system physical address space에 직접 mapping되는 persistent memory와 NVDIMM media에 대한 block aperture access mechanism 중 하나 또는 둘 모두의 지원 여부를 나타냅니다. formats 속성은 지원되는 interface 수를 표시합니다. 이 layout은 DIMM당 code 하나만 예상하는 기존 libndctl binary와 호환됩니다. 이 binary들은 nmemX/nfit/formats와 nmemX/nfit/formatN을 무시합니다.

NVDIMM vendor ID

84-91
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/vendor
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) NVDIMM의 vendor ID입니다.

NVDIMM device DSM function mask

92-101
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/dsm_mask
Date2016년 5월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) 이 bitmask는 장치가 지원하는 NVDIMM command family를 기준으로, 지원되는 device-specific control function을 나타냅니다.

NVDIMM command family

102-117
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/family
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) NVDIMM family command set을 표시합니다.
Specificationhttp://pmem.io/documents/NVDIMM_DSM_Interface-V1.6.pdf / https://github.com/HewlettPackard/hpe-nvm/blob/master/Documentation/ / https://msdn.microsoft.com/library/windows/hardware/mt604741". 원문의 마지막 URL에는 닫는 큰따옴표가 붙어 있습니다.
Command family
0NVDIMM_FAMILY_INTEL
1NVDIMM_FAMILY_HPE1
2NVDIMM_FAMILY_HPE2
3NVDIMM_FAMILY_MSFT

ACPI NVDIMM identifier

118-126
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/id
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) ACPI specification 6.2의 5.2.25.9절은 NVDIMM identifier를 정의하며, 이 값이 id 속성에 반영됩니다.

NVDIMM subsystem vendor ID

127-135
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/subsystem_vendor
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) NVDIMM non-volatile memory subsystem controller의 subsystem vendor ID입니다.

NVDIMM subsystem revision ID

136-145
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/subsystem_rev_id
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) Non-volatile memory subsystem controller vendor가 할당한 NVDIMM non-volatile memory subsystem controller의 subsystem revision ID입니다.

NVDIMM subsystem device ID

146-155
항목한국어 전문 번역
What/sys/bus/nd/devices/nmemX/nfit/subsystem_device
Date2016년 4월
KernelVersionv4.7
Contactnvdimm@lists.linux.dev
Description(RO) Non-volatile memory subsystem controller vendor가 할당한 NVDIMM non-volatile memory subsystem controller의 subsystem device ID입니다.

ACPI NFIT table revision

156-163
항목한국어 전문 번역
What/sys/bus/nd/devices/ndbusX/nfit/revision
Date2015년 6월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) ACPI NFIT table revision 번호입니다.

Address Range Scrub 상태와 실행

164-176
항목한국어 전문 번역
What/sys/bus/nd/devices/ndbusX/nfit/scrub
Date2016년 9월
KernelVersionv4.9
Contactnvdimm@lists.linux.dev
Description(RW) Driver가 load된 뒤 완료된 전체 Address Range Scrub(ARS) 횟수를 표시합니다. Userspace는 select/poll 등으로 이 값을 기다릴 수 있습니다. 값 끝의 '+'는 ARS가 진행 중임을 나타냅니다. 1을 쓰면 ARS scan을 시작합니다.

Hardware error scrub 정책

177-195
항목한국어 전문 번역
What/sys/bus/nd/devices/ndbusX/nfit/hw_error_scrub
Date2016년 9월
KernelVersionv4.9
Contactnvdimm@lists.linux.dev
Description(RW) MCE가 발생한 address(cache line)만 poison list에 추가하는 동작과 전체 scrub을 수행하는 동작 사이를 전환합니다. Address를 선택적으로 추가하는 전자의 동작은 조건 없이 수행됩니다.
쓰기 값동작
0기본 모드로 전환합니다. Exception은 memory error address만 poison list와 badblocks list에 삽입합니다.
1Memory error exception을 받으면 전체 scrub을 수행하도록 활성화합니다.

NFIT bus DSM function mask

196-204
항목한국어 전문 번역
What/sys/bus/nd/devices/ndbusX/nfit/dsm_mask
Date2017년 6월
KernelVersionv4.13
Contactnvdimm@lists.linux.dev
Description(RO) 이 bitmask는 지원되는 bus-specific control function을 나타냅니다. ACPI specification의 'NVDIMM Root Device _DSMs' 절을 참조하십시오.

Firmware activation idle 우회

205-224
항목한국어 전문 번역
What/sys/bus/nd/devices/ndbusX/nfit/firmware_activate_noidle
Date2020년 4월
KernelVersionv5.8
Contactnvdimm@lists.linux.dev
Description(RW) Intel platform의 firmware activation 구현은 activation event 동안 platform이 system 장치를 강제로 idle 상태로 만들게 할지, OS가 이를 수행한다고 신뢰할지 선택하게 합니다. 안전한 기본값은 platform이 장치를 강제로 idle 상태로 만드는 것입니다. Kernel이 이미 suspend 상태이고, driver가 suspend callback 뒤 bus-mastering을 올바르게 quiesce하지 못해도 platform이 처리할 수 있기 때문입니다. 그러나 platform firmware가 activation 시간이 최대 PCI-E completion timeout을 넘는다고 판단하는 등의 경우 activation이 중단될 수 있습니다. Platform은 OS가 suspend context에서 activation을 실행하는지 알지 못해 중단하지만, system owner가 driver suspend callback만으로 충분하다고 신뢰한다면 'firmware_activation_noidle'을 활성화하여 activation 중단을 우회할 수 있습니다.

NVDIMM region range index

225-233
항목한국어 전문 번역
What/sys/bus/nd/devices/regionX/nfit/range_index
Date2015년 6월
KernelVersionv4.2
Contactnvdimm@lists.linux.dev
Description(RO) BIOS가 address range를 식별하도록 제공하는 고유 번호입니다. NVDIMM Region Mapping Structure가 이 structure를 고유하게 참조하는 데 사용합니다. 값 0은 예약되어 index로 사용하지 않습니다.