• Sai Praneeth Prakhya's avatar
    iommu/vt-d: Add debugfs support to show scalable mode DMAR table internals · dd5142ca
    Sai Praneeth Prakhya authored
    A DMAR table walk would typically follow the below process.
    1. Bus number is used to index into root table which points to a context
       table.
    2. Device number and Function number are used together to index into
       context table which then points to a pasid directory.
    3. PASID[19:6] is used to index into PASID directory which points to a
       PASID table.
    4. PASID[5:0] is used to index into PASID table which points to all levels
       of page tables.
    
    Whenever a user opens the file
    "/sys/kernel/debug/iommu/intel/dmar_translation_struct", the above
    described DMAR table walk is performed and the contents of the table are
    dumped into the file. The dump could be handy while dealing with devices
    that use PASID.
    
    Example of such dump:
    cat /sys/kernel/debug/iommu/intel/dmar_translation_struct
    
    (Please note that because of 80 char limit, entries that should have been
    in the same line are broken into different lines)
    
    IOMMU dmar0: Root Table Address: 0x436f7c000
    B.D.F	Root_entry				Context_entry
    PASID	PASID_table_entry
    00:0a.0	0x0000000000000000:0x000000044dd3f001	0x0000000000100000:0x0000000435460e1d
    0	0x000000044d6e1089:0x0000000000000003:0x0000000000000001
    00:0a.0	0x0000000000000000:0x000000044dd3f001	0x0000000000100000:0x0000000435460e1d
    1	0x0000000000000049:0x0000000000000001:0x0000000003c0e001
    
    Note that the above format is followed even for legacy DMAR table dump
    which doesn't support PASID and hence in such cases PASID is defaulted to
    -1 indicating that PASID and it's related fields are invalid.
    
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Ashok Raj <ashok.raj@intel.com>
    Cc: Lu Baolu <baolu.lu@linux.intel.com>
    Cc: Sohil Mehta <sohil.mehta@intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarSai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    dd5142ca
intel-iommu-debugfs.c 11.1 KB