diff options
author | graysky | 2021-11-25 20:39:29 -0500 |
---|---|---|
committer | graysky | 2021-11-25 20:39:29 -0500 |
commit | 0b0a458b513b1c7c71c40095b0a1dd6d1d0921e0 (patch) | |
tree | b9d286e9b2d303a9923d66de63a757d5af47d818 /0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch | |
parent | 865ea60d3deca54fd8ba60b5c2b2c8ad982a920d (diff) | |
download | aur-0b0a458b513b1c7c71c40095b0a1dd6d1d0921e0.tar.gz |
Update to 5.15.5-1
Diffstat (limited to '0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch')
-rw-r--r-- | 0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch b/0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch deleted file mode 100644 index e107764a385e..000000000000 --- a/0005-iommu-intel-do-deep-dma-unmapping-to-avoid-kernel-fl.patch +++ /dev/null @@ -1,88 +0,0 @@ -From e17b993a29594029001366eb183c527ef9144d6c Mon Sep 17 00:00:00 2001 -From: Ajay Garg <ajaygargnsit@gmail.com> -Date: Tue, 12 Oct 2021 19:26:53 +0530 -Subject: [PATCH 5/8] iommu: intel: do deep dma-unmapping, to avoid - kernel-flooding. - -Origins at : -https://lists.linuxfoundation.org/pipermail/iommu/2021-October/thread.html - -=== Changes from v1 => v2 === - -a) -Improved patch-description. - -b) -A more root-level fix, as suggested by - - 1. - Alex Williamson <alex.williamson@redhat.com> - - 2. - Lu Baolu <baolu.lu@linux.intel.com> - -=== Issue === - -Kernel-flooding is seen, when an x86_64 L1 guest (Ubuntu-21) is booted in qemu/kvm -on a x86_64 host (Ubuntu-21), with a host-pci-device attached. - -Following kind of logs, along with the stacktraces, cause the flood : - -...... - DMAR: ERROR: DMA PTE for vPFN 0x428ec already set (to 3f6ec003 not 3f6ec003) - DMAR: ERROR: DMA PTE for vPFN 0x428ed already set (to 3f6ed003 not 3f6ed003) - DMAR: ERROR: DMA PTE for vPFN 0x428ee already set (to 3f6ee003 not 3f6ee003) - DMAR: ERROR: DMA PTE for vPFN 0x428ef already set (to 3f6ef003 not 3f6ef003) - DMAR: ERROR: DMA PTE for vPFN 0x428f0 already set (to 3f6f0003 not 3f6f0003) -...... - -=== Current Behaviour, leading to the issue === - -Currently, when we do a dma-unmapping, we unmap/unlink the mappings, but -the pte-entries are not cleared. - -Thus, following sequencing would flood the kernel-logs : - -i) -A dma-unmapping makes the real/leaf-level pte-slot invalid, but the -pte-content itself is not cleared. - -ii) -Now, during some later dma-mapping procedure, as the pte-slot is about -to hold a new pte-value, the intel-iommu checks if a prior -pte-entry exists in the pte-slot. If it exists, it logs a kernel-error, -along with a corresponding stacktrace. - -iii) -Step ii) runs in abundance, and the kernel-logs run insane. - -=== Fix === - -We ensure that as part of a dma-unmapping, each (unmapped) pte-slot -is also cleared of its value/content (at the leaf-level, where the -real mapping from a iova => pfn mapping is stored). - -This completes a "deep" dma-unmapping. - -Signed-off-by: Ajay Garg <ajaygargnsit@gmail.com> -Link: https://lore.kernel.org/linux-iommu/20211012135653.3852-1-ajaygargnsit@gmail.com/ ---- - drivers/iommu/intel/iommu.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c -index d75f59ae28e6..485a8ea71394 100644 ---- a/drivers/iommu/intel/iommu.c -+++ b/drivers/iommu/intel/iommu.c -@@ -5090,6 +5090,8 @@ static size_t intel_iommu_unmap(struct iommu_domain *domain, - gather->freelist = domain_unmap(dmar_domain, start_pfn, - last_pfn, gather->freelist); - -+ dma_pte_clear_range(dmar_domain, start_pfn, last_pfn); -+ - if (dmar_domain->max_addr == iova + size) - dmar_domain->max_addr = iova; - --- -2.34.0 - |