From: Dheeraj Kumar Srivastava <dheerajkumar.srivastava@amd.com>
To: <joro@8bytes.org>, <suravee.suthikulpanit@amd.com>,
<will@kernel.org>, <robin.murphy@arm.com>,
<dheerajkumar.srivastava@amd.com>, <linux-kernel@vger.kernel.org>,
<iommu@lists.linux.dev>
Subject: [PATCH 0/8] Introduce debugfs support in IOMMU
Date: Tue, 8 Oct 2024 16:10:27 +0530 [thread overview]
Message-ID: <20241008104035.4008-1-dheerajkumar.srivastava@amd.com> (raw)
Introducing debugfs support in AMD/IOMMU driver that will allow
userspace to dump below IOMMU information
1) MMIO and Capability register per IOMMU
2) Command buffer
3) Device table entry
4) Interrupt remapping table entry
Analyzing contents of IOMMU data structures helps in understanding IOMMU
capabilities and behavior and debug issues faster.
1. MMIO and Capability registers - Add support to dump MMIO and Capability
registers per IOMMU.
Example:
a. Write MMIO register offset to dump it
$ echo 0x18 > /sys/kernel/debug/iommu/amd/iommu00/mmio
$ cat /sys/kernel/debug/iommu/amd/iommu00/mmio_dump
Output:
$ 0x0003f48d
b. Write capability register offset to dump it
$ echo 0x10 > /sys/kernel/debug/iommu/amd/iommu00/capability
$ cat /sys/kernel/debug/iommu/amd/iommu00/capability_dump
Output:
$ 0x00203040
2. Command buffer - Add support to dump per IOMMU command buffer.
Example:
a. cat /sys/kernel/debug/iommu/amd/iommu00/cmdbuf
Output:
CMD Buffer Head pointer register:0x00001fb0 Tail pointer register:0x00001fb0
0: 00835001100000010000990000000000
1: 0000000030000005fffff0037fffffff
2: 00835001100000010000990100000000
3: 0000000030000005fffff0037fffffff
4: 00835001100000010000990200000000
...................................
...................................
...................................
3. Device table - Add support to dump device table per IOMMU.
Example:
a. Write device id to dump device table entry for that device
$ echo 0000:01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid
Output:
0000:01:00.0
Dump the device table entry for the input given
$ cat /sys/kernel/debug/iommu/amd/devtbl
Output:
DeviceId QWORD[3] QWORD[2] QWORD[1] QWORD[0] iommu
0000:01:00.0 0000000000000000 20000001373b8013 0000000000000038 6000000114d7b603 iommu3
b. Write device id to dump device table entry for that device
$ echo 01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid
Output:
0000:01:00.0
Dump the device table entry for the input given
$ cat /sys/kernel/debug/iommu/amd/devtbl
Output:
DeviceId QWORD[3] QWORD[2] QWORD[1] QWORD[0] iommu
0000:01:00.0 0000000000000000 20000001373b8013 0000000000000038 6000000114d7b603 iommu3
4. Interrupt remapping table - Add support to dump IRT table valid entries in
"iommu_irqtbl" file. This supports user input to dump IRT entry for a
specific pci device.
Example:
a. Write device id to dump device table entry for that device
$ echo 0000:01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid
Output:
0000:01:00.0
Dump the device table entry for the input given
$ cat /sys/kernel/debug/iommu/amd/irtbl
Output:
DeviceId 0000:01:00.0
IRT[0000] 00000000000000200000000000000241
IRT[0001] 00000000000000200000000000000841
IRT[0002] 00000000000000200000000000002041
IRT[0003] 00000000000000200000000000008041
IRT[0004] 00000000000000200000000000020041
..........................................
..........................................
..........................................
b. Write device id to dump device table entry for that device
$ echo 01:00.0 > /sys/kernel/debug/iommu/amd/devid
$ cat /sys/kernel/debug/iommu/amd/devid
Output:
0000:01:00.0
Dump the device table entry for the input given
$ cat /sys/kernel/debug/iommu/amd/irttbl
Output:
Device 0000:01:00.0
IRT[0000] 00000000000000200000000000000241
IRT[0001] 00000000000000200000000000000841
IRT[0002] 00000000000000200000000000002041
IRT[0003] 00000000000000200000000000008041
IRT[0004] 00000000000000200000000000020041
..........................................
..........................................
..........................................
Dheeraj Kumar Srivastava (8):
iommu/amd: Refactor AMD IOMMU debugfs initial setup
iommu/amd: Add debugfs support to dump IOMMU MMIO registers
iommu/amd: Add debugfs support to dump IOMMU Capability registers
iommu/amd: Add debugfs support to dump IOMMU command buffer
iommu/amd: Add support for device id user input
iommu/amd: Add debugfs support to dump device table
iommu/amd: Add debugfs support to dump IRT Table
iommu/amd: Add documentation for AMD IOMMU debugfs support
Documentation/ABI/testing/debugfs-amd-iommu | 140 +++++++
drivers/iommu/amd/amd_iommu.h | 4 +-
drivers/iommu/amd/amd_iommu_types.h | 7 +
drivers/iommu/amd/debugfs.c | 419 +++++++++++++++++++-
drivers/iommu/amd/init.c | 5 +-
drivers/iommu/amd/iommu.c | 7 -
6 files changed, 561 insertions(+), 21 deletions(-)
create mode 100644 Documentation/ABI/testing/debugfs-amd-iommu
base-commit: 8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
--
2.25.1
next reply other threads:[~2024-10-08 10:41 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-08 10:40 Dheeraj Kumar Srivastava [this message]
2024-10-08 10:40 ` [PATCH 1/8] iommu/amd: Refactor AMD IOMMU debugfs initial setup Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 2/8] iommu/amd: Add debugfs support to dump IOMMU MMIO registers Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 3/8] iommu/amd: Add debugfs support to dump IOMMU Capability registers Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 4/8] iommu/amd: Add debugfs support to dump IOMMU command buffer Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 5/8] iommu/amd: Add support for device id user input Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 6/8] iommu/amd: Add debugfs support to dump device table Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 7/8] iommu/amd: Add debugfs support to dump IRT Table Dheeraj Kumar Srivastava
2024-10-08 10:40 ` [PATCH 8/8] iommu/amd: Add documentation for AMD IOMMU debugfs support Dheeraj Kumar Srivastava
2024-10-09 1:32 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20241008104035.4008-1-dheerajkumar.srivastava@amd.com \
--to=dheerajkumar.srivastava@amd.com \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox