|
|
@@ -474,8 +474,8 @@ static void domain_exit(struct dmar_domain *domain);
|
|
|
static void domain_remove_dev_info(struct dmar_domain *domain);
|
|
|
static void dmar_remove_one_dev_info(struct dmar_domain *domain,
|
|
|
struct device *dev);
|
|
|
-static void iommu_detach_dependent_devices(struct intel_iommu *iommu,
|
|
|
- struct device *dev);
|
|
|
+static void domain_context_clear(struct intel_iommu *iommu,
|
|
|
+ struct device *dev);
|
|
|
static int domain_detach_iommu(struct dmar_domain *domain,
|
|
|
struct intel_iommu *iommu);
|
|
|
|
|
|
@@ -2230,7 +2230,7 @@ static inline int domain_pfn_mapping(struct dmar_domain *domain, unsigned long i
|
|
|
return __domain_mapping(domain, iov_pfn, NULL, phys_pfn, nr_pages, prot);
|
|
|
}
|
|
|
|
|
|
-static void iommu_detach_dev(struct intel_iommu *iommu, u8 bus, u8 devfn)
|
|
|
+static void domain_context_clear_one(struct intel_iommu *iommu, u8 bus, u8 devfn)
|
|
|
{
|
|
|
if (!iommu)
|
|
|
return;
|
|
|
@@ -4551,11 +4551,11 @@ out_free_dmar:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static int iommu_detach_dev_cb(struct pci_dev *pdev, u16 alias, void *opaque)
|
|
|
+static int domain_context_clear_one_cb(struct pci_dev *pdev, u16 alias, void *opaque)
|
|
|
{
|
|
|
struct intel_iommu *iommu = opaque;
|
|
|
|
|
|
- iommu_detach_dev(iommu, PCI_BUS_NUM(alias), alias & 0xff);
|
|
|
+ domain_context_clear_one(iommu, PCI_BUS_NUM(alias), alias & 0xff);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
@@ -4565,13 +4565,12 @@ static int iommu_detach_dev_cb(struct pci_dev *pdev, u16 alias, void *opaque)
|
|
|
* devices, unbinding the driver from any one of them will possibly leave
|
|
|
* the others unable to operate.
|
|
|
*/
|
|
|
-static void iommu_detach_dependent_devices(struct intel_iommu *iommu,
|
|
|
- struct device *dev)
|
|
|
+static void domain_context_clear(struct intel_iommu *iommu, struct device *dev)
|
|
|
{
|
|
|
if (!iommu || !dev || !dev_is_pci(dev))
|
|
|
return;
|
|
|
|
|
|
- pci_for_each_dma_alias(to_pci_dev(dev), &iommu_detach_dev_cb, iommu);
|
|
|
+ pci_for_each_dma_alias(to_pci_dev(dev), &domain_context_clear_one_cb, iommu);
|
|
|
}
|
|
|
|
|
|
static void dmar_remove_one_dev_info(struct dmar_domain *domain,
|
|
|
@@ -4596,8 +4595,7 @@ static void dmar_remove_one_dev_info(struct dmar_domain *domain,
|
|
|
spin_unlock_irqrestore(&device_domain_lock, flags);
|
|
|
|
|
|
iommu_disable_dev_iotlb(info);
|
|
|
- iommu_detach_dev(iommu, info->bus, info->devfn);
|
|
|
- iommu_detach_dependent_devices(iommu, dev);
|
|
|
+ domain_context_clear(iommu, dev);
|
|
|
free_devinfo_mem(info);
|
|
|
domain_detach_iommu(domain, iommu);
|
|
|
|