]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
iommu/amd: Log IOMMU control register in event log path
authorVasant Hegde <vasant.hegde@amd.com>
Thu, 27 Feb 2025 16:23:14 +0000 (16:23 +0000)
committerJoerg Roedel <jroedel@suse.de>
Mon, 10 Mar 2025 08:27:08 +0000 (09:27 +0100)
Useful for debugging ILLEGAL_DEV_TABLE_ENTRY events as some of the
DTE settings depends on Control register settings.

Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20250227162320.5805-2-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/iommu.c

index b48a72bd7b23df7adb1a2c81a2440d084daff2cd..797c8612966a918d3aeae4daddda3c150d0b357e 100644 (file)
@@ -868,7 +868,7 @@ static void iommu_print_event(struct amd_iommu *iommu, void *__evt)
        int type, devid, flags, tag;
        volatile u32 *event = __evt;
        int count = 0;
-       u64 address;
+       u64 address, ctrl;
        u32 pasid;
 
 retry:
@@ -878,6 +878,7 @@ retry:
                  (event[1] & EVENT_DOMID_MASK_LO);
        flags   = (event[1] >> EVENT_FLAGS_SHIFT) & EVENT_FLAGS_MASK;
        address = (u64)(((u64)event[3]) << 32) | event[2];
+       ctrl    = readq(iommu->mmio_base + MMIO_CONTROL_OFFSET);
 
        if (type == 0) {
                /* Did we hit the erratum? */
@@ -899,6 +900,7 @@ retry:
                dev_err(dev, "Event logged [ILLEGAL_DEV_TABLE_ENTRY device=%04x:%02x:%02x.%x pasid=0x%05x address=0x%llx flags=0x%04x]\n",
                        iommu->pci_seg->id, PCI_BUS_NUM(devid), PCI_SLOT(devid), PCI_FUNC(devid),
                        pasid, address, flags);
+               dev_err(dev, "Control Reg : 0x%llx\n", ctrl);
                dump_dte_entry(iommu, devid);
                break;
        case EVENT_TYPE_DEV_TAB_ERR: