]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/amd: Fix PPR interrupt processing logic
authorVasant Hegde <vasant.hegde@amd.com>
Thu, 18 Apr 2024 10:33:50 +0000 (10:33 +0000)
committerJoerg Roedel <jroedel@suse.de>
Fri, 26 Apr 2024 10:15:59 +0000 (12:15 +0200)
* Do not re-read ppr head pointer as its just updated by the driver.

* Do not read PPR buffer tail pointer inside while loop. If IOMMU
  generates PPR events continuously then completing interrupt processing
  takes long time. In worst case it may cause infinite loop.

Suggested-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20240418103400.6229-6-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/ppr.c

index 1f76ed549ec1c5f9cd473de35beeb464ac7f6b0b..65db1745f40c029e3aa844e10a21b4ff4b2dbd6c 100644 (file)
@@ -106,9 +106,5 @@ void amd_iommu_poll_ppr_log(struct amd_iommu *iommu)
                writel(head, iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
 
                /* TODO: PPR Handler will be added when we add IOPF support */
-
-               /* Refresh ring-buffer information */
-               head = readl(iommu->mmio_base + MMIO_PPR_HEAD_OFFSET);
-               tail = readl(iommu->mmio_base + MMIO_PPR_TAIL_OFFSET);
        }
 }