← Documents Documentation/ABI/testing/debugfs-driver-habanalabs GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

Habanalabs accelerator debugfs ABI

Habanalabs accelerator의 PCI BAR·DMA memory access, command queues, device state, RAZWI·security events, I2C·LED, MMU, monitor dump, reset·timeout 정책과 user mappings debugfs ABI를 설명합니다.

Source pathDocumentation/ABI/testing/debugfs-driver-habanalabs
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

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

1. 요약·해설

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

Address selector와 command queues

debugfs-driver-habanalabs:1-36

PCI BAR 또는 IOMMU-disabled host mapped memory access에 사용할 address를 지정하고 현재 command buffers·submissions·jobs를 조회합니다. clk_gate는 deprecated입니다.

PCI BAR·DMA data와 device state

debugfs-driver-habanalabs:38-109

Root user의 32·64-bit PCI BAR access, internal DRAM/SRAM DMA read, device state 변경, release watchdog와 최대 128MB DMA transaction size를 제어합니다.

Events, engines, I2C

debugfs-driver-habanalabs:111-174

RAZWI·security events를 dmesg로 dump하고 acknowledge하며 engine status와 device CPU가 수행할 I2C transaction fields를 설정합니다. I2C interface는 secured firmware에서 제공되지 않습니다.

LED, memory scrub, MMU diagnostics

debugfs-driver-habanalabs:176-230

Software LEDs와 DRAM scrub value를 제어하고 ASID·VA의 MMU translation 및 capability mask로 선택한 MMU errors를 조회합니다.

Monitor dump, server type, PCI power

debugfs-driver-habanalabs:232-267

Protected config space의 monitor registers를 binary blob으로 dump하고 device server type과 PCI D0·D3Hot power state를 제공합니다.

Reset policy, state dumps, engine timeout

debugfs-driver-habanalabs:269-300

Command submission timeout 때 reset을 건너뛸지, engine을 error에서 멈출지, timeout seconds를 설정하고 CS failure 직전 생성된 state dump history를 읽습니다.

Pinned user pointers와 virtual mappings

debugfs-driver-habanalabs:302-323

DMA address에 pin·map된 user virtual addresses를 나열·검색하고 ASID별 active virtual mappings와 HW block user mappings를 표시합니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 What: /sys/kernel/debug/accel/<parent_device>/addr
2 Date: Jan 2019
3 KernelVersion: 5.1
5 Description: Sets the device address to be used for read or write through
6 PCI bar, or the device VA of a host mapped memory to be read or
7 written directly from the host. The latter option is allowed
8 only when the IOMMU is disabled.
9 The acceptable value is a string that starts with "0x"
10
11 What: /sys/kernel/debug/accel/<parent_device>/clk_gate
12 Date: May 2020
13 KernelVersion: 5.8
15 Description: This setting is now deprecated as clock gating is handled solely by the f/w
16
17 What: /sys/kernel/debug/accel/<parent_device>/command_buffers
18 Date: Jan 2019
19 KernelVersion: 5.1
21 Description: Displays a list with information about the currently allocated
22 command buffers
23
24 What: /sys/kernel/debug/accel/<parent_device>/command_submission
25 Date: Jan 2019
26 KernelVersion: 5.1
28 Description: Displays a list with information about the currently active
29 command submissions
30
31 What: /sys/kernel/debug/accel/<parent_device>/command_submission_jobs
32 Date: Jan 2019
33 KernelVersion: 5.1
35 Description: Displays a list with detailed information about each JOB (CB) of
36 each active command submission
37
38 What: /sys/kernel/debug/accel/<parent_device>/data32
39 Date: Jan 2019
40 KernelVersion: 5.1
42 Description: Allows the root user to read or write directly through the
43 device's PCI bar. Writing to this file generates a write
44 transaction while reading from the file generates a read
45 transaction. This custom interface is needed (instead of using
46 the generic Linux user-space PCI mapping) because the DDR bar
47 is very small compared to the DDR memory and only the driver can
48 move the bar before and after the transaction.
49
50 If the IOMMU is disabled, it also allows the root user to read
51 or write from the host a device VA of a host mapped memory
52
53 What: /sys/kernel/debug/accel/<parent_device>/data64
54 Date: Jan 2020
55 KernelVersion: 5.6
57 Description: Allows the root user to read or write 64 bit data directly
58 through the device's PCI bar. Writing to this file generates a
59 write transaction while reading from the file generates a read
60 transaction. This custom interface is needed (instead of using
61 the generic Linux user-space PCI mapping) because the DDR bar
62 is very small compared to the DDR memory and only the driver can
63 move the bar before and after the transaction.
64
65 If the IOMMU is disabled, it also allows the root user to read
66 or write from the host a device VA of a host mapped memory
67
68 What: /sys/kernel/debug/accel/<parent_device>/data_dma
69 Date: Apr 2021
70 KernelVersion: 5.13
72 Description: Allows the root user to read from the device's internal
73 memory (DRAM/SRAM) through a DMA engine.
74 This property is a binary blob that contains the result of the
75 DMA transfer.
76 This custom interface is needed (instead of using the generic
77 Linux user-space PCI mapping) because the amount of internal
78 memory is huge (>32GB) and reading it via the PCI bar will take
79 a very long time.
80 This interface doesn't support concurrency in the same device.
81 In GAUDI and GOYA, this action can cause undefined behavior
82 in case it is done while the device is executing user
83 workloads.
84 Only supported on GAUDI at this stage.
85
86 What: /sys/kernel/debug/accel/<parent_device>/device
87 Date: Jan 2019
88 KernelVersion: 5.1
90 Description: Enables the root user to set the device to specific state.
91 Valid values are "disable", "enable", "suspend", "resume".
92 User can read this property to see the valid values
93
94 What: /sys/kernel/debug/accel/<parent_device>/device_release_watchdog_timeout
95 Date: Oct 2022
96 KernelVersion: 6.2
98 Description: The watchdog timeout value in seconds for a device release upon
99 certain error cases, after which the device is reset.
100
101 What: /sys/kernel/debug/accel/<parent_device>/dma_size
102 Date: Apr 2021
103 KernelVersion: 5.13
105 Description: Specify the size of the DMA transaction when using DMA to read
106 from the device's internal memory. The value can not be larger
107 than 128MB. Writing to this value initiates the DMA transfer.
108 When the write is finished, the user can read the "data_dma"
109 blob
110
111 What: /sys/kernel/debug/accel/<parent_device>/dump_razwi_events
112 Date: Aug 2022
113 KernelVersion: 5.20
115 Description: Dumps all razwi events to dmesg if exist.
116 After reading the status register of an existing event
117 the routine will clear the status register.
118 Usage: cat dump_razwi_events
119
120 What: /sys/kernel/debug/accel/<parent_device>/dump_security_violations
121 Date: Jan 2021
122 KernelVersion: 5.12
124 Description: Dumps all security violations to dmesg. This will also ack
125 all security violations meanings those violations will not be
126 dumped next time user calls this API
127
128 What: /sys/kernel/debug/accel/<parent_device>/engines
129 Date: Jul 2019
130 KernelVersion: 5.3
132 Description: Displays the status registers values of the device engines and
133 their derived idle status
134
135 What: /sys/kernel/debug/accel/<parent_device>/i2c_addr
136 Date: Jan 2019
137 KernelVersion: 5.1
139 Description: Sets I2C device address for I2C transaction that is generated
140 by the device's CPU, Not available when device is loaded with secured
141 firmware
142
143 What: /sys/kernel/debug/accel/<parent_device>/i2c_bus
144 Date: Jan 2019
145 KernelVersion: 5.1
147 Description: Sets I2C bus address for I2C transaction that is generated by
148 the device's CPU, Not available when device is loaded with secured
149 firmware
150
151 What: /sys/kernel/debug/accel/<parent_device>/i2c_data
152 Date: Jan 2019
153 KernelVersion: 5.1
155 Description: Triggers an I2C transaction that is generated by the device's
156 CPU. Writing to this file generates a write transaction while
157 reading from the file generates a read transaction, Not available
158 when device is loaded with secured firmware
159
160 What: /sys/kernel/debug/accel/<parent_device>/i2c_len
161 Date: Dec 2021
162 KernelVersion: 5.17
164 Description: Sets I2C length in bytes for I2C transaction that is generated by
165 the device's CPU, Not available when device is loaded with secured
166 firmware
167
168 What: /sys/kernel/debug/accel/<parent_device>/i2c_reg
169 Date: Jan 2019
170 KernelVersion: 5.1
172 Description: Sets I2C register id for I2C transaction that is generated by
173 the device's CPU, Not available when device is loaded with secured
174 firmware
175
176 What: /sys/kernel/debug/accel/<parent_device>/led0
177 Date: Jan 2019
178 KernelVersion: 5.1
180 Description: Sets the state of the first S/W led on the device, Not available
181 when device is loaded with secured firmware
182
183 What: /sys/kernel/debug/accel/<parent_device>/led1
184 Date: Jan 2019
185 KernelVersion: 5.1
187 Description: Sets the state of the second S/W led on the device, Not available
188 when device is loaded with secured firmware
189
190 What: /sys/kernel/debug/accel/<parent_device>/led2
191 Date: Jan 2019
192 KernelVersion: 5.1
194 Description: Sets the state of the third S/W led on the device, Not available
195 when device is loaded with secured firmware
196
197 What: /sys/kernel/debug/accel/<parent_device>/memory_scrub
198 Date: May 2022
199 KernelVersion: 5.19
201 Description: Allows the root user to scrub the dram memory. The scrubbing
202 value can be set using the debugfs file memory_scrub_val.
203
204 What: /sys/kernel/debug/accel/<parent_device>/memory_scrub_val
205 Date: May 2022
206 KernelVersion: 5.19
208 Description: The value to which the dram will be set to when the user
209 scrubs the dram using 'memory_scrub' debugfs file and
210 the scrubbing value when using module param 'memory_scrub'
211
212 What: /sys/kernel/debug/accel/<parent_device>/mmu
213 Date: Jan 2019
214 KernelVersion: 5.1
216 Description: Displays the hop values and physical address for a given ASID
217 and virtual address. The user should write the ASID and VA into
218 the file and then read the file to get the result.
219 e.g. to display info about VA 0x1000 for ASID 1 you need to do:
220 echo "1 0x1000" > /sys/kernel/debug/accel/<parent_device>/mmu
221
222 What: /sys/kernel/debug/accel/<parent_device>/mmu_error
223 Date: Mar 2021
224 KernelVersion: 5.12
226 Description: Check and display page fault or access violation mmu errors for
227 all MMUs specified in mmu_cap_mask.
228 e.g. to display error info for MMU hw cap bit 9, you need to do:
229 echo "0x200" > /sys/kernel/debug/accel/<parent_device>/mmu_error
230 cat /sys/kernel/debug/accel/<parent_device>/mmu_error
231
232 What: /sys/kernel/debug/accel/<parent_device>/monitor_dump
233 Date: Mar 2022
234 KernelVersion: 5.19
236 Description: Allows the root user to dump monitors status from the device's
237 protected config space.
238 This property is a binary blob that contains the result of the
239 monitors registers dump.
240 This custom interface is needed (instead of using the generic
241 Linux user-space PCI mapping) because this space is protected
242 and cannot be accessed using PCI read.
243 This interface doesn't support concurrency in the same device.
244 Only supported on GAUDI.
245
246 What: /sys/kernel/debug/accel/<parent_device>/monitor_dump_trig
247 Date: Mar 2022
248 KernelVersion: 5.19
250 Description: Triggers dump of monitor data. The value to trigger the operation
251 must be 1. Triggering the monitor dump operation initiates dump of
252 current registers values of all monitors.
253 When the write is finished, the user can read the "monitor_dump"
254 blob
255
256 What: /sys/kernel/debug/accel/<parent_device>/server_type
257 Date: Feb 2024
258 KernelVersion: 6.11
260 Description: Exposes the device's server type, maps to enum hl_server_type.
261
262 What: /sys/kernel/debug/accel/<parent_device>/set_power_state
263 Date: Jan 2019
264 KernelVersion: 5.1
266 Description: Sets the PCI power state. Valid values are "1" for D0 and "2"
267 for D3Hot
268
269 What: /sys/kernel/debug/accel/<parent_device>/skip_reset_on_timeout
270 Date: Jun 2021
271 KernelVersion: 5.13
273 Description: Sets the skip reset on timeout option for the device. Value of
274 "0" means device will be reset in case some CS has timed out,
275 otherwise it will not be reset.
276
277 What: /sys/kernel/debug/accel/<parent_device>/state_dump
278 Date: Oct 2021
279 KernelVersion: 5.15
281 Description: Gets the state dump occurring on a CS timeout or failure.
282 State dump is used for debug and is created each time in case of
283 a problem in a CS execution, before reset.
284 Reading from the node returns the newest state dump available.
285 Writing an integer X discards X state dumps, so that the
286 next read would return X+1-st newest state dump.
287
288 What: /sys/kernel/debug/accel/<parent_device>/stop_on_err
289 Date: Mar 2020
290 KernelVersion: 5.6
292 Description: Sets the stop-on_error option for the device engines. Value of
293 "0" is for disable, otherwise enable.
294 Relevant only for GOYA and GAUDI.
295
296 What: /sys/kernel/debug/accel/<parent_device>/timeout_locked
297 Date: Sep 2021
298 KernelVersion: 5.16
300 Description: Sets the command submission timeout value in seconds.
301
302 What: /sys/kernel/debug/accel/<parent_device>/userptr
303 Date: Jan 2019
304 KernelVersion: 5.1
306 Description: Displays a list with information about the current user
307 pointers (user virtual addresses) that are pinned and mapped
308 to DMA addresses
309
310 What: /sys/kernel/debug/accel/<parent_device>/userptr_lookup
311 Date: Oct 2021
312 KernelVersion: 5.15
314 Description: Allows to search for specific user pointers (user virtual
315 addresses) that are pinned and mapped to DMA addresses, and see
316 their resolution to the specific dma address.
317
318 What: /sys/kernel/debug/accel/<parent_device>/vm
319 Date: Jan 2019
320 KernelVersion: 5.1
322 Description: Displays a list with information about all the active virtual
323 address mappings per ASID and all user mappings of HW blocks
324

3. 한국어 전문 번역

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

Address selector, clock gating, command queues

1-36
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/addr2019년 1월 / 5.1[email protected]PCI BAR를 통해 읽거나 쓸 device address를 설정합니다. 또는 host가 직접 읽고 쓸 host-mapped memory의 device VA를 설정할 수 있지만 이 방식은 IOMMU가 disabled인 경우에만 허용됩니다. 허용값은 0x로 시작하는 문자열입니다.
/sys/kernel/debug/accel/<parent_device>/clk_gate2020년 5월 / 5.8[email protected]Clock gating을 firmware만 처리하므로 현재 deprecated된 설정입니다.
/sys/kernel/debug/accel/<parent_device>/command_buffers2019년 1월 / 5.1[email protected]현재 할당된 command buffers의 정보를 목록으로 표시합니다.
/sys/kernel/debug/accel/<parent_device>/command_submission2019년 1월 / 5.1[email protected]현재 active command submissions의 정보를 목록으로 표시합니다.
/sys/kernel/debug/accel/<parent_device>/command_submission_jobs2019년 1월 / 5.1[email protected]각 active command submission에 포함된 모든 JOB(CB)의 상세 정보를 목록으로 표시합니다.

PCI BAR와 DMA data access, device state

38-109
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/data322019년 1월 / 5.1[email protected]Root user가 device PCI BAR를 통해 직접 32-bit data를 읽고 씁니다. 쓰기는 write transaction, 읽기는 read transaction을 만듭니다. DDR memory에 비해 DDR BAR가 매우 작아 transaction 전후 BAR를 옮길 수 있는 driver 전용 interface가 필요합니다. IOMMU가 disabled이면 host-mapped memory의 device VA도 host에서 읽고 쓸 수 있습니다.
/sys/kernel/debug/accel/<parent_device>/data642020년 1월 / 5.6[email protected]Root user가 device PCI BAR를 통해 직접 64-bit data를 읽고 씁니다. 쓰기는 write transaction, 읽기는 read transaction을 만듭니다. 작은 DDR BAR를 driver가 transaction 전후 이동해야 하므로 generic userspace PCI mapping 대신 이 interface를 사용합니다. IOMMU가 disabled이면 host-mapped memory의 device VA도 host에서 읽고 쓸 수 있습니다.
/sys/kernel/debug/accel/<parent_device>/data_dma2021년 4월 / 5.13[email protected]Root user가 DMA engine으로 device internal memory(DRAM/SRAM)를 읽습니다. DMA 결과를 담은 binary blob입니다. Internal memory가 매우 커서(32GB 초과) PCI BAR로 읽으면 오래 걸리므로 제공됩니다. 같은 device에서 concurrency를 지원하지 않습니다. GAUDI와 GOYA에서 user workload 실행 중 수행하면 undefined behavior가 발생할 수 있으며, 현재는 GAUDI만 지원합니다.
/sys/kernel/debug/accel/<parent_device>/device2019년 1월 / 5.1[email protected]Root user가 device state를 설정합니다. 유효값은 "disable", "enable", "suspend", "resume"이며 읽으면 유효값 목록을 볼 수 있습니다.
/sys/kernel/debug/accel/<parent_device>/device_release_watchdog_timeout2022년 10월 / 6.2[email protected]특정 error cases에서 device release를 기다리는 watchdog timeout seconds입니다. 시간이 지나면 device를 reset합니다.
/sys/kernel/debug/accel/<parent_device>/dma_size2021년 4월 / 5.13[email protected]DMA로 internal memory를 읽을 transaction size를 지정합니다. 128MB보다 클 수 없습니다. 값을 쓰면 DMA transfer가 시작되고 write가 끝난 뒤 data_dma blob을 읽을 수 있습니다.
Habanalabs memory access 경로
addr = device addressdata32 / data64Driver moves DDR BARPCI read or write
addr = host-mapped device VAIOMMU disableddata32 / data64Host direct access
dma_size ≤ 128MBWrite starts DMADRAM / SRAMdata_dma binary blob

addr가 access 대상을 고르고 data32/64는 이동 가능한 PCI BAR를 사용한다. 큰 internal memory dump는 dma_size write로 DMA를 시작한 뒤 data_dma blob에서 읽는다.

RAZWI, security violations, engines

111-133
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/dump_razwi_events2022년 8월 / 5.20[email protected]존재하는 모든 RAZWI events를 dmesg에 dump합니다. 기존 event의 status register를 읽은 뒤 routine이 status register를 clear합니다. 사용법은 cat dump_razwi_events입니다.
/sys/kernel/debug/accel/<parent_device>/dump_security_violations2021년 1월 / 5.12[email protected]모든 security violations를 dmesg에 dump하면서 전부 acknowledge합니다. 따라서 다음 API 호출에서는 같은 violations가 다시 dump되지 않습니다.
/sys/kernel/debug/accel/<parent_device>/engines2019년 7월 / 5.3[email protected]Device engines의 status register values와 그 값에서 계산한 idle status를 표시합니다.
cat dump_razwi_events

Device CPU I2C transaction fields

135-174

아래 모든 I2C interfaces는 device에 secured firmware가 load된 경우 사용할 수 없습니다.

WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/i2c_addr2019년 1월 / 5.1[email protected]Device CPU가 생성할 I2C transaction의 I2C device address를 설정합니다.
/sys/kernel/debug/accel/<parent_device>/i2c_bus2019년 1월 / 5.1[email protected]Device CPU가 생성할 I2C transaction의 I2C bus address를 설정합니다.
/sys/kernel/debug/accel/<parent_device>/i2c_data2019년 1월 / 5.1[email protected]Device CPU가 생성하는 I2C transaction을 trigger합니다. File write는 write transaction, file read는 read transaction을 생성합니다.
/sys/kernel/debug/accel/<parent_device>/i2c_len2021년 12월 / 5.17[email protected]Device CPU가 생성할 I2C transaction의 길이를 byte 단위로 설정합니다.
/sys/kernel/debug/accel/<parent_device>/i2c_reg2019년 1월 / 5.1[email protected]Device CPU가 생성할 I2C transaction의 I2C register ID를 설정합니다.

Software LEDs와 DRAM scrub

176-210
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/led02019년 1월 / 5.1[email protected]Device의 첫 번째 software LED state를 설정합니다. Secured firmware에서는 사용할 수 없습니다.
/sys/kernel/debug/accel/<parent_device>/led12019년 1월 / 5.1[email protected]Device의 두 번째 software LED state를 설정합니다. Secured firmware에서는 사용할 수 없습니다.
/sys/kernel/debug/accel/<parent_device>/led22019년 1월 / 5.1[email protected]Device의 세 번째 software LED state를 설정합니다. Secured firmware에서는 사용할 수 없습니다.
/sys/kernel/debug/accel/<parent_device>/memory_scrub2022년 5월 / 5.19[email protected]Root user가 DRAM memory를 scrub할 수 있습니다. Scrub value는 memory_scrub_val에서 설정합니다.
/sys/kernel/debug/accel/<parent_device>/memory_scrub_val2022년 5월 / 5.19[email protected]memory_scrub debugfs file로 DRAM을 scrub할 때 설정할 값이며 module parameter memory_scrub에서도 사용하는 scrub value입니다.

MMU translation과 error diagnostics

212-230
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/mmu2019년 1월 / 5.1[email protected]주어진 ASID와 virtual address에 대한 hop values와 physical address를 표시합니다. ASID와 VA를 쓴 뒤 file을 읽어 결과를 얻습니다.
/sys/kernel/debug/accel/<parent_device>/mmu_error2021년 3월 / 5.12[email protected]mmu_cap_mask에 지정한 모든 MMU의 page fault 또는 access violation errors를 확인하고 표시합니다.

ASID 1의 VA 0x1000 translation 정보를 요청하는 예입니다.

echo "1 0x1000" > /sys/kernel/debug/accel/<parent_device>/mmu

MMU hardware capability bit 9의 error를 조회하는 예입니다.

echo "0x200" > /sys/kernel/debug/accel/<parent_device>/mmu_error
cat /sys/kernel/debug/accel/<parent_device>/mmu_error
MMU debugfs 입력과 결과
ASID + virtual addressmmuPage-table hop valuesPhysical address
mmu_cap_maskmmu_errorPage fault or access violation

Translation 조회는 ASID와 VA를 입력하고, error 조회는 capability bitmask를 입력한 뒤 같은 node를 읽는다.

Protected monitor dump와 device identity·power

232-267
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/monitor_dump2022년 3월 / 5.19[email protected]Root user가 device protected config space의 monitor status를 dump합니다. Monitor register dump 결과를 담은 binary blob입니다. Protected space라 PCI read가 불가능해 전용 interface가 필요합니다. 같은 device에서 concurrency를 지원하지 않으며 GAUDI에서만 지원합니다.
/sys/kernel/debug/accel/<parent_device>/monitor_dump_trig2022년 3월 / 5.19[email protected]Monitor data dump를 trigger합니다. 1을 써야 하며 모든 monitors의 현재 register values를 dump합니다. Write가 끝난 뒤 monitor_dump blob을 읽을 수 있습니다.
/sys/kernel/debug/accel/<parent_device>/server_type2024년 2월 / 6.11[email protected]Device server type을 노출하며 enum hl_server_type에 mapping됩니다.
/sys/kernel/debug/accel/<parent_device>/set_power_state2019년 1월 / 5.1[email protected]PCI power state를 설정합니다. "1"은 D0, "2"는 D3Hot입니다.
Protected monitor register dump
monitor_dump_trig = 1Read all monitor registersProtected config spacemonitor_dump binary blob
Same-device concurrent requestNot supported

Generic PCI read로 접근할 수 없는 protected config space를 trigger한 뒤 driver가 binary blob으로 전달한다.

Reset policy, state dump history, engine timeout

269-300
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/skip_reset_on_timeout2021년 6월 / 5.13[email protected]Device의 timeout reset 생략 option을 설정합니다. 0이면 command submission timeout 시 device를 reset하고, 그 밖의 값이면 reset하지 않습니다.
/sys/kernel/debug/accel/<parent_device>/state_dump2021년 10월 / 5.15[email protected]CS timeout 또는 failure 때 발생한 state dump를 가져옵니다. CS execution 문제 시 reset 전에 매번 debug dump를 만듭니다. 읽으면 가장 최신 dump를 반환합니다. Integer X를 쓰면 X개 dump를 버려 다음 read가 (X+1)번째 최신 dump를 반환하게 합니다.
/sys/kernel/debug/accel/<parent_device>/stop_on_err2020년 3월 / 5.6[email protected]Device engines의 stop-on-error option을 설정합니다. 0은 disable이고 그 밖의 값은 enable입니다. GOYA와 GAUDI에만 해당합니다.
/sys/kernel/debug/accel/<parent_device>/timeout_locked2021년 9월 / 5.16[email protected]Command submission timeout을 seconds 단위로 설정합니다.
CS failure state dump와 reset decision
CS timeout or failureCreate state dump before resetNewest dumpRead state_dump
Write X to state_dumpDiscard X newest dumpsRead (X+1)-st newest
skip_reset_on_timeout = 0Reset device
skip_reset_on_timeout ≠ 0Do not reset

CS timeout·failure가 발생하면 reset 전에 state dump를 쌓는다. 최신 dump를 읽거나 앞선 X개를 버려 과거 dump를 선택할 수 있고 reset 정책은 별도 option이 결정한다.

Pinned user pointers와 VM mappings

302-323
WhatDate / KernelVersionContact설명
/sys/kernel/debug/accel/<parent_device>/userptr2019년 1월 / 5.1[email protected]현재 pin되어 DMA addresses에 mapping된 user pointers, 즉 user virtual addresses 정보를 목록으로 표시합니다.
/sys/kernel/debug/accel/<parent_device>/userptr_lookup2021년 10월 / 5.15[email protected]Pin되어 DMA addresses에 mapping된 특정 user pointers를 검색하고 해당 DMA address로 resolve되는 결과를 확인합니다.
/sys/kernel/debug/accel/<parent_device>/vm2019년 1월 / 5.1[email protected]ASID별 모든 active virtual address mappings와 HW blocks의 모든 user mappings 정보를 목록으로 표시합니다.