summaryrefslogtreecommitdiffstats
path: root/drivers/iommu
diff options
context:
space:
mode:
authorLu Baolu <baolu.lu@linux.intel.com>2023-11-22 11:26:05 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-12-08 08:52:24 +0100
commit48f2183a4f9d3540fc5cfc8f8451621ee92c09f8 (patch)
treef1df004fecb9d1f73be80b111d92f1b8c0cb38ec /drivers/iommu
parentc0b0cfd979fbc6a5abc0127c087e1f3d4c91f281 (diff)
downloadlinux-stable-48f2183a4f9d3540fc5cfc8f8451621ee92c09f8.tar.gz
linux-stable-48f2183a4f9d3540fc5cfc8f8451621ee92c09f8.tar.bz2
linux-stable-48f2183a4f9d3540fc5cfc8f8451621ee92c09f8.zip
iommu/vt-d: Make context clearing consistent with context mapping
[ Upstream commit 9a16ab9d640274b20813d2d17475e18d3e99d834 ] 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> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/intel/iommu.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 18fa71aadc90..4c3707384bd9 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -3923,8 +3923,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);