iommu/vt-d: Make context clearing consistent with context mapping
authorLu Baolu <baolu.lu@linux.intel.com>
Wed, 22 Nov 2023 03:26:05 +0000 (11:26 +0800)
committerJoerg Roedel <jroedel@suse.de>
Mon, 27 Nov 2023 10:07:52 +0000 (11:07 +0100)
In the iommu probe_device path, domain_context_mapping() allows setting
up the context entry for a non-PCI device. However, in the iommu
release_device path, domain_context_clear() only clears context entries
for PCI devices.

Make domain_context_clear() behave consistently with
domain_context_mapping() by clearing context entries for both PCI and
non-PCI devices.

Fixes: 579305f75d34 ("iommu/vt-d: Update to use PCI DMA aliases")
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/20231114011036.70142-4-baolu.lu@linux.intel.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/iommu.c

index 9bddd4fbbdf8c49b59e9adf3748208aaf0c6d3c0..4c257ccf9dc33ee9507147137bf4e91812835575 100644 (file)
@@ -3928,8 +3928,8 @@ static int domain_context_clear_one_cb(struct pci_dev *pdev, u16 alias, void *op
  */
 static void domain_context_clear(struct device_domain_info *info)
 {
-       if (!info->iommu || !info->dev || !dev_is_pci(info->dev))
-               return;
+       if (!dev_is_pci(info->dev))
+               domain_context_clear_one(info, info->bus, info->devfn);
 
        pci_for_each_dma_alias(to_pci_dev(info->dev),
                               &domain_context_clear_one_cb, info);