From: Vasant Hegde Date: Thu, 18 Apr 2024 10:33:50 +0000 (+0000) Subject: iommu/amd: Fix PPR interrupt processing logic X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7c5b7176f0c3996adbe853adb1f857bd4f82b1e2;p=linux.git iommu/amd: Fix PPR interrupt processing logic * 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 Signed-off-by: Vasant Hegde Reviewed-by: Jason Gunthorpe Link: https://lore.kernel.org/r/20240418103400.6229-6-vasant.hegde@amd.com Signed-off-by: Joerg Roedel --- diff --git a/drivers/iommu/amd/ppr.c b/drivers/iommu/amd/ppr.c index 1f76ed549ec1c..65db1745f40c0 100644 --- a/drivers/iommu/amd/ppr.c +++ b/drivers/iommu/amd/ppr.c @@ -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); } }