public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/5] iommu/vt-d: debugfs: Enhancements to IOMMU debugfs
@ 2023-06-25 15:04 Jingqi Liu
  2023-06-25 15:04 ` [PATCH 1/5] iommu/vt-d: debugfs: Define domain_translation_struct file ops Jingqi Liu
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Jingqi Liu @ 2023-06-25 15:04 UTC (permalink / raw)
  To: iommu, Lu Baolu, Tian Kevin, Joerg Roedel, Will Deacon,
	Robin Murphy
  Cc: linux-kernel, Jingqi Liu

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 by traversing root tables, context tables,
pasid directories and pasid tables from hardware perspective. By
specifying source identifier and PASID, it supports dumping specified
page table or all page tables in legacy mode or scalable mode.

For a device that only supports legacy mode, specify the source
identifier, and search the root table and context table to dump its
page table. It does not support to specify PASID.

For a device that supports scalable mode, specify a
{source identifier, PASID} pair and search the root table, context table
and pasid table to dump its page table.  If the pasid is not specified,
it is set to RID_PASID.

Switch to dump all page tables by specifying "auto".

Examples are as follows:
1) Dump the page table of device "00:1f.0" that only supports legacy
mode.

$ sudo echo 00:1f.0 >
/sys/kernel/debug/iommu/intel/domain_translation_struct
$ sudo cat /sys/kernel/debug/iommu/intel/domain_translation_struct
Device 0000:00:1f.0 @0x105407000
IOVA_PFN                PML5E                   PML4E
0x0000000000000 |       0x0000000000000000      0x0000000105408003
0x0000000000001 |       0x0000000000000000      0x0000000105408003
0x0000000000002 |       0x0000000000000000      0x0000000105408003
0x0000000000003 |       0x0000000000000000      0x0000000105408003

PDPE                    PDE                     PTE
0x0000000105409003      0x000000010540a003      0x0000000000000003
0x0000000105409003      0x000000010540a003      0x0000000000001003
0x0000000105409003      0x000000010540a003      0x0000000000002003
0x0000000105409003      0x000000010540a003      0x0000000000003003

[...]

2) Dump the page table of device "00:0a.0" with pasid "2".

$ sudo echo 00:0a.0,2 >
/sys/kernel/debug/iommu/intel/domain_translation_struct
$ sudo cat /sys/kernel/debug/iommu/intel/domain_translation_struct
Device 0000:00:0a.0 with pasid 2 @0x1083d7000
IOVA_PFN                PML5E                   PML4E
0x0000000000000 |       0x0000000000000000      0x0000000106aaa003
0x0000000000001 |       0x0000000000000000      0x0000000106aaa003
0x0000000000002 |       0x0000000000000000      0x0000000106aaa003
0x0000000000003 |       0x0000000000000000      0x0000000106aaa003

PDPE                    PDE                     PTE
0x000000010a819003      0x000000010a7aa003      0x0000000129800003
0x000000010a819003      0x000000010a7aa003      0x0000000129801003
0x000000010a819003      0x000000010a7aa003      0x0000000129802003
0x000000010a819003      0x000000010a7aa003      0x0000000129803003

[...]

3) Dump all page tables:
$ sudo echo "auto" >
/sys/kernel/debug/iommu/intel/domain_translation_struct
$ sudo cat /sys/kernel/debug/iommu/intel/domain_translation_struct
[...]

Device 0000:00:02.0 @0x103072000
IOVA_PFN                PML5E                   PML4E
0x000000008d800 |       0x0000000000000000      0x0000000103073003
0x000000008d801 |       0x0000000000000000      0x0000000103073003

PDPE                    PDE                     PTE
0x0000000103074003      0x0000000103075003      0x000000008d800003
0x0000000103074003      0x0000000103075003      0x000000008d801003

[...]

Device 0000:00:0a.0 with pasid 2 @0x10a0b6000
IOVA_PFN                PML5E                   PML4E
0x0000000000000 |       0x0000000000000000      0x00000001072d2003
0x0000000000001 |       0x0000000000000000      0x00000001072d2003

PDPE                    PDE                     PTE
0x0000000107d6e003      0x00000001161d4003      0x00000001bdc00003
0x0000000107d6e003      0x00000001161d4003      0x00000001bdc01003

[...]

Thanks,
Jingqi

Jingqi Liu (5):
  iommu/vt-d: debugfs: Define domain_translation_struct file ops
  iommu/vt-d: debugfs: Support specifying source identifier and PASID
  iommu/vt-d: debugfs: Dump the corresponding page table of a pasid
  iommu/vt-d: debugfs: Support dumping a specified page table
  iommu/vt-d: debugfs: Dump entry pointing to huge page

 drivers/iommu/intel/debugfs.c | 361 ++++++++++++++++++++++++++++++----
 1 file changed, 326 insertions(+), 35 deletions(-)

-- 
2.21.3


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2023-07-11  6:23 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-25 15:04 [PATCH 0/5] iommu/vt-d: debugfs: Enhancements to IOMMU debugfs Jingqi Liu
2023-06-25 15:04 ` [PATCH 1/5] iommu/vt-d: debugfs: Define domain_translation_struct file ops Jingqi Liu
2023-06-25 15:04 ` [PATCH 2/5] iommu/vt-d: debugfs: Support specifying source identifier and PASID Jingqi Liu
2023-06-25 15:04 ` [PATCH 3/5] iommu/vt-d: debugfs: Dump the corresponding page table of a pasid Jingqi Liu
2023-06-25 15:04 ` [PATCH 4/5] iommu/vt-d: debugfs: Support dumping a specified page table Jingqi Liu
2023-06-25 15:04 ` [PATCH 5/5] iommu/vt-d: debugfs: Dump entry pointing to huge page Jingqi Liu
2023-07-03  7:15 ` [PATCH 0/5] iommu/vt-d: debugfs: Enhancements to IOMMU debugfs Tian, Kevin
2023-07-03 14:37   ` Liu, Jingqi
2023-07-04  7:54     ` Tian, Kevin
2023-07-11  1:40       ` Liu, Jingqi
2023-07-11  2:52         ` Baolu Lu
2023-07-11  6:23           ` Liu, Jingqi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox