From: Jingqi Liu <Jingqi.liu@intel.com>
To: iommu@lists.linux.dev, Lu Baolu <baolu.lu@linux.intel.com>,
Tian Kevin <kevin.tian@intel.com>, Joerg Roedel <joro@8bytes.org>,
Will Deacon <will@kernel.org>,
Robin Murphy <robin.murphy@arm.com>
Cc: linux-kernel@vger.kernel.org, Jingqi Liu <Jingqi.liu@intel.com>
Subject: [PATCH v2 0/3] iommu/vt-d: debugfs: Enhancements to IOMMU debugfs
Date: Fri, 22 Sep 2023 23:16:33 +0800 [thread overview]
Message-ID: <20230922151636.77139-1-Jingqi.liu@intel.com> (raw)
The original debugfs only dumps all IOMMU page tables without pasid
supported. It traverses all devices on the pci bus, then dumps all
page tables based on device domains. This traversal is from software
perspective.
This series dumps page tables whose mappings are created and destroyed
by the iommu_map/unmap() interfaces, by traversing root tables,
context tables, pasid directories and pasid tables from hardware
perspective. It supports dumping a specified page table in legacy mode
or scalable mode with or without a specified pasid.
It adds a debugfs directory per pair of {device, pasid} when attaching
device with or without pasid, i.e.
/sys/kernel/debug/iommu/intel/<device source id>/<pasid>.
And create a debugfs file in the directory for users to dump the page
table corresponding to {device, pasid}. e.g.
/sys/kernel/debug/iommu/intel/0000:00:02.0/0/domain_translation_struct.
Each device has a PASID#0, i.e. RID_PASID. Remove the corresponding
debugfs directory and file when detaching or releasing a device.
For legacy mode, according to bus number and DEVFN, traverse the root
table and context table to get the pointer of page table in the
context table entry, then dump the specified page table.
For scalable mode, according to bus number, DEVFN and pasid, traverse
the root table, context table, pasid directory and pasid table to get
the pointer of page table in the pasid table entry, then dump the
specified page table.
Examples are as follows:
1) Dump the page table of device "0000:00:01.0" that only supports
legacy mode.
$ sudo cat
/sys/kernel/debug/iommu/intel/0000:00:01.0/0/domain_translation_struct
2) Dump the page table of device "0000:00:02.0" with PASID "1" that
supports scalable mode.
$ sudo cat
/sys/kernel/debug/iommu/intel/0000:00:0a.0/1/domain_translation_struct
Change log:
v2:
- Add a debugfs directory per {dev, pasid} as suggested by Kevin.
- Create the debugfs directory when attaching device as suggested by Baolu.
- Only dump the page tables whose mappings are created and destroyed
by the iommu_map/unmap() interfaces per Baolu's review.
- Rename the helpers for creating/removing debugfs directory/file and
merge patch 2,3,4,5 to one patch per Baolu's review.
v1: https://lore.kernel.org/linux-iommu/20230625150442.42197-1-Jingqi.liu@intel.com
Jingqi Liu (3):
iommu/vt-d: debugfs: Dump entry pointing to huge page
iommu/vt-d: debugfs: Create/remove debugfs file per {device, pasid}
iommu/vt-d: debugfs: Support dumping a specified page table
drivers/iommu/intel/debugfs.c | 291 ++++++++++++++++++++++++++++------
drivers/iommu/intel/iommu.c | 16 ++
drivers/iommu/intel/iommu.h | 4 +
3 files changed, 261 insertions(+), 50 deletions(-)
--
2.21.3
next reply other threads:[~2023-09-22 15:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-22 15:16 Jingqi Liu [this message]
2023-09-22 15:16 ` [PATCH v2 1/3] iommu/vt-d: debugfs: Dump entry pointing to huge page Jingqi Liu
2023-09-22 15:16 ` [PATCH v2 2/3] iommu/vt-d: debugfs: Create/remove debugfs file per {device, pasid} Jingqi Liu
2023-09-25 1:47 ` Baolu Lu
2023-09-25 12:03 ` Liu, Jingqi
2023-09-22 15:16 ` [PATCH v2 3/3] iommu/vt-d: debugfs: Support dumping a specified page table Jingqi Liu
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=20230922151636.77139-1-Jingqi.liu@intel.com \
--to=jingqi.liu@intel.com \
--cc=baolu.lu@linux.intel.com \
--cc=iommu@lists.linux.dev \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=robin.murphy@arm.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
all inboxes | Powered by JetHome®