Skip to content

Commit 474dd1c

Browse files
LuBaolujoergroedel
authored andcommitted
iommu/vt-d: Fix clearing real DMA device's scalable-mode context entries
The commit 2b0140c ("iommu/vt-d: Use pci_real_dma_dev() for mapping") fixes an issue of "sub-device is removed where the context entry is cleared for all aliases". But this commit didn't consider the PASID entry and PASID table in VT-d scalable mode. This fix increases the coverage of scalable mode. Suggested-by: Sanjay Kumar <sanjay.k.kumar@intel.com> Fixes: 8038bdb ("iommu/vt-d: Only clear real DMA device's context entries") Fixes: 2b0140c ("iommu/vt-d: Use pci_real_dma_dev() for mapping") Cc: stable@vger.kernel.org # v5.6+ Cc: Jon Derrick <jonathan.derrick@intel.com> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Link: https://lore.kernel.org/r/20210712071712.3416949-1-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent 37764b9 commit 474dd1c

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

drivers/iommu/intel/iommu.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4472,14 +4472,13 @@ static void __dmar_remove_one_dev_info(struct device_domain_info *info)
44724472
iommu = info->iommu;
44734473
domain = info->domain;
44744474

4475-
if (info->dev) {
4475+
if (info->dev && !dev_is_real_dma_subdevice(info->dev)) {
44764476
if (dev_is_pci(info->dev) && sm_supported(iommu))
44774477
intel_pasid_tear_down_entry(iommu, info->dev,
44784478
PASID_RID2PASID, false);
44794479

44804480
iommu_disable_dev_iotlb(info);
4481-
if (!dev_is_real_dma_subdevice(info->dev))
4482-
domain_context_clear(info);
4481+
domain_context_clear(info);
44834482
intel_pasid_free_table(info->dev);
44844483
}
44854484

0 commit comments

Comments
 (0)