← Documents Documentation/ABI/testing/debugfs-amd-iommu GitHub 원문 ↗

Linux 6.18.37 · ABI / testing

AMD IOMMU debugfs ABI

AMD IOMMU의 MMIO·capability register 조회, command buffer dump, PCI device ID 선택과 해당 device table·interrupt remapping table entry 조회 debugfs interface를 설명합니다.

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

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

1. 요약·해설

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

MMIO와 capability registers

debugfs-amd-iommu:1-34

IOMMU instance의 MMIO 또는 capability register offset을 debugfs file에 쓰고 같은 file을 읽어 해당 register 값을 확인합니다.

IOMMU command buffer

debugfs-amd-iommu:35-61

각 IOMMU instance의 command buffer head·tail offsets와 raw command entries를 읽기 전용으로 출력합니다.

Device ID, device table, interrupt remapping table

debugfs-amd-iommu:63-131

PCI device ID를 devid에 지정한 뒤 devtbl에서 device table entry를, irqtbl에서 유효한 interrupt remapping table entries를 읽습니다.

2. 영어 원문 전체

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

원문 전체 펼치기
1 What: /sys/kernel/debug/iommu/amd/iommu<x>/mmio
2 Date: January 2025
3 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
4 Description:
5 This file provides read/write access for user input. Users specify the
6 MMIO register offset for iommu<x>, and the file outputs the corresponding
7 MMIO register value of iommu<x>
8
9 Example::
10
11 $ echo "0x18" > /sys/kernel/debug/iommu/amd/iommu00/mmio
12 $ cat /sys/kernel/debug/iommu/amd/iommu00/mmio
13
14 Output::
15
16 Offset:0x18 Value:0x000c22000003f48d
17
18 What: /sys/kernel/debug/iommu/amd/iommu<x>/capability
19 Date: January 2025
20 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
21 Description:
22 This file provides read/write access for user input. Users specify the
23 capability register offset for iommu<x>, and the file outputs the
24 corresponding capability register value of iommu<x>.
25
26 Example::
27
28 $ echo "0x10" > /sys/kernel/debug/iommu/amd/iommu00/capability
29 $ cat /sys/kernel/debug/iommu/amd/iommu00/capability
30
31 Output::
32
33 Offset:0x10 Value:0x00203040
34
35 What: /sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf
36 Date: January 2025
37 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
38 Description:
39 This file is a read-only output file containing iommu<x> command
40 buffer entries.
41
42 Examples::
43
44 $ cat /sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf
45
46 Output::
47
48 CMD Buffer Head Offset:339 Tail Offset:339
49 0: 00835001 10000001 00003c00 00000000
50 1: 00000000 30000005 fffff003 7fffffff
51 2: 00835001 10000001 00003c01 00000000
52 3: 00000000 30000005 fffff003 7fffffff
53 4: 00835001 10000001 00003c02 00000000
54 5: 00000000 30000005 fffff003 7fffffff
55 6: 00835001 10000001 00003c03 00000000
56 7: 00000000 30000005 fffff003 7fffffff
57 8: 00835001 10000001 00003c04 00000000
58 9: 00000000 30000005 fffff003 7fffffff
59 10: 00835001 10000001 00003c05 00000000
60 11: 00000000 30000005 fffff003 7fffffff
61 [...]
62
63 What: /sys/kernel/debug/iommu/amd/devid
64 Date: January 2025
65 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
66 Description:
67 This file provides read/write access for user input. Users specify the
68 device ID, which can be used to dump IOMMU data structures such as the
69 interrupt remapping table and device table.
70
71 Example:
72
73 1.
74 ::
75
76 $ echo 0000:01:00.0 > /sys/kernel/debug/iommu/amd/devid
77 $ cat /sys/kernel/debug/iommu/amd/devid
78
79 Output::
80
81 0000:01:00.0
82
83 2.
84 ::
85
86 $ echo 01:00.0 > /sys/kernel/debug/iommu/amd/devid
87 $ cat /sys/kernel/debug/iommu/amd/devid
88
89 Output::
90
91 0000:01:00.0
92
93 What: /sys/kernel/debug/iommu/amd/devtbl
94 Date: January 2025
95 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
96 Description:
97 This file is a read-only output file containing the device table entry
98 for the device ID provided in /sys/kernel/debug/iommu/amd/devid.
99
100 Example::
101
102 $ cat /sys/kernel/debug/iommu/amd/devtbl
103
104 Output::
105
106 DeviceId QWORD[3] QWORD[2] QWORD[1] QWORD[0] iommu
107 0000:01:00.0 0000000000000000 20000001373b8013 0000000000000038 6000000114d7b603 iommu3
108
109 What: /sys/kernel/debug/iommu/amd/irqtbl
110 Date: January 2025
111 Contact: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
112 Description:
113 This file is a read-only output file containing valid IRT table entries
114 for the device ID provided in /sys/kernel/debug/iommu/amd/devid.
115
116 Example::
117
118 $ cat /sys/kernel/debug/iommu/amd/irqtbl
119
120 Output::
121
122 DeviceId 0000:01:00.0
123 IRT[0000] 0000000000000020 0000000000000241
124 IRT[0001] 0000000000000020 0000000000000841
125 IRT[0002] 0000000000000020 0000000000002041
126 IRT[0003] 0000000000000020 0000000000008041
127 IRT[0004] 0000000000000020 0000000000020041
128 IRT[0005] 0000000000000020 0000000000080041
129 IRT[0006] 0000000000000020 0000000000200041
130 IRT[0007] 0000000000000020 0000000000800041
131 [...]
132

3. 한국어 전문 번역

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

MMIO와 capability register 조회

1-34
항목내용
Date2025년 1월
ContactDheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
What설명권한
/sys/kernel/debug/iommu/amd/iommu<x>/mmio사용자가 iommu<x>의 MMIO register offset을 지정하면 해당 MMIO register 값을 출력합니다.RW
/sys/kernel/debug/iommu/amd/iommu<x>/capability사용자가 iommu<x>의 capability register offset을 지정하면 해당 capability register 값을 출력합니다.RW

MMIO register 0x18을 조회하는 예입니다.

$ echo "0x18" > /sys/kernel/debug/iommu/amd/iommu00/mmio
$ cat /sys/kernel/debug/iommu/amd/iommu00/mmio

출력:

Offset:0x18 Value:0x000c22000003f48d

Capability register 0x10을 조회하는 예입니다.

$ echo "0x10" > /sys/kernel/debug/iommu/amd/iommu00/capability
$ cat /sys/kernel/debug/iommu/amd/iommu00/capability

출력:

Offset:0x10 Value:0x00203040

Command buffer entries

35-61
항목내용
What/sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf
Date2025년 1월
ContactDheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
Descriptioniommu<x> command buffer entries를 담은 읽기 전용 출력 file
$ cat /sys/kernel/debug/iommu/amd/iommu<x>/cmdbuf

출력:

CMD Buffer Head Offset:339 Tail Offset:339
  0: 00835001 10000001 00003c00 00000000
  1: 00000000 30000005 fffff003 7fffffff
  2: 00835001 10000001 00003c01 00000000
  3: 00000000 30000005 fffff003 7fffffff
  4: 00835001 10000001 00003c02 00000000
  5: 00000000 30000005 fffff003 7fffffff
  6: 00835001 10000001 00003c03 00000000
  7: 00000000 30000005 fffff003 7fffffff
  8: 00835001 10000001 00003c04 00000000
  9: 00000000 30000005 fffff003 7fffffff
 10: 00835001 10000001 00003c05 00000000
 11: 00000000 30000005 fffff003 7fffffff
[...]

Device ID selector

63-92
항목내용
What/sys/kernel/debug/iommu/amd/devid
Date2025년 1월
ContactDheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
DescriptionDevice ID를 입력받는 읽기·쓰기 file. 선택한 ID는 interrupt remapping table과 device table 같은 IOMMU data structures를 dump할 때 사용합니다.

Domain을 포함한 PCI BDF를 지정하는 첫 번째 예입니다.

$ echo 0000:01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid

출력:

0000:01:00.0

Domain을 생략한 PCI BDF를 지정해도 출력에는 0000 domain이 포함됩니다.

$ echo 01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid

출력:

0000:01:00.0

Device table과 interrupt remapping table

93-131
What설명권한
/sys/kernel/debug/iommu/amd/devtbl/sys/kernel/debug/iommu/amd/devid에 지정한 device ID의 device table entry를 출력합니다.RO
/sys/kernel/debug/iommu/amd/irqtbl/sys/kernel/debug/iommu/amd/devid에 지정한 device ID의 유효한 IRT table entries를 출력합니다.RO

두 ABI 항목의 날짜는 2025년 1월이고 담당자는 Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>입니다.

$ cat /sys/kernel/debug/iommu/amd/devtbl

Device table 출력:

DeviceId             QWORD[3]         QWORD[2]         QWORD[1]         QWORD[0] iommu
0000:01:00.0 0000000000000000 20000001373b8013 0000000000000038 6000000114d7b603 iommu3
$ cat /sys/kernel/debug/iommu/amd/irqtbl

Interrupt remapping table 출력:

DeviceId 0000:01:00.0
IRT[0000] 0000000000000020 0000000000000241
IRT[0001] 0000000000000020 0000000000000841
IRT[0002] 0000000000000020 0000000000002041
IRT[0003] 0000000000000020 0000000000008041
IRT[0004] 0000000000000020 0000000000020041
IRT[0005] 0000000000000020 0000000000080041
IRT[0006] 0000000000000020 0000000000200041
IRT[0007] 0000000000000020 0000000000800041
[...]
AMD IOMMU debugfs 조회 방식
MMIO offsetiommu<x>/mmioMMIO register value
Capability offsetiommu<x>/capabilityCapability register value
iommu<x>/cmdbufHead / tail offsetsRaw command entries
PCI device IDdeviddevtblDevice table entry
PCI device IDdevidirqtblValid IRT entries

Register files에는 offset을, devid에는 PCI device ID를 먼저 쓴다. 이후 같은 file 또는 연관된 read-only dump file을 읽어 선택한 대상을 확인한다.