Retrieve the attached domain for a device through the generic interface
exposed by the iommu core. This also makes device_domain_lock static.

Signed-off-by: Lu Baolu <baolu...@linux.intel.com>
---
 drivers/iommu/intel/iommu.h   |  1 -
 drivers/iommu/intel/debugfs.c | 20 ++++++++------------
 drivers/iommu/intel/iommu.c   |  2 +-
 3 files changed, 9 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h
index a22adfbdf870..8a6d64d726c0 100644
--- a/drivers/iommu/intel/iommu.h
+++ b/drivers/iommu/intel/iommu.h
@@ -480,7 +480,6 @@ enum {
 #define VTD_FLAG_SVM_CAPABLE           (1 << 2)
 
 extern int intel_iommu_sm;
-extern spinlock_t device_domain_lock;
 
 #define sm_supported(iommu)    (intel_iommu_sm && ecap_smts((iommu)->ecap))
 #define pasid_supported(iommu) (sm_supported(iommu) &&                 \
diff --git a/drivers/iommu/intel/debugfs.c b/drivers/iommu/intel/debugfs.c
index d927ef10641b..eea8727aa7bc 100644
--- a/drivers/iommu/intel/debugfs.c
+++ b/drivers/iommu/intel/debugfs.c
@@ -344,19 +344,21 @@ static void pgtable_walk_level(struct seq_file *m, struct 
dma_pte *pde,
 
 static int show_device_domain_translation(struct device *dev, void *data)
 {
-       struct device_domain_info *info = dev_iommu_priv_get(dev);
-       struct dmar_domain *domain = info->domain;
+       struct dmar_domain *dmar_domain;
+       struct iommu_domain *domain;
        struct seq_file *m = data;
        u64 path[6] = { 0 };
 
+       domain = iommu_get_domain_for_dev(dev);
        if (!domain)
                return 0;
 
+       dmar_domain = to_dmar_domain(domain);
        seq_printf(m, "Device %s @0x%llx\n", dev_name(dev),
-                  (u64)virt_to_phys(domain->pgd));
+                  (u64)virt_to_phys(dmar_domain->pgd));
        seq_puts(m, 
"IOVA_PFN\t\tPML5E\t\t\tPML4E\t\t\tPDPE\t\t\tPDE\t\t\tPTE\n");
 
-       pgtable_walk_level(m, domain->pgd, domain->agaw + 2, 0, path);
+       pgtable_walk_level(m, dmar_domain->pgd, dmar_domain->agaw + 2, 0, path);
        seq_putc(m, '\n');
 
        return 0;
@@ -364,15 +366,9 @@ static int show_device_domain_translation(struct device 
*dev, void *data)
 
 static int domain_translation_struct_show(struct seq_file *m, void *unused)
 {
-       unsigned long flags;
-       int ret;
 
-       spin_lock_irqsave(&device_domain_lock, flags);
-       ret = bus_for_each_dev(&pci_bus_type, NULL, m,
-                              show_device_domain_translation);
-       spin_unlock_irqrestore(&device_domain_lock, flags);
-
-       return ret;
+       return bus_for_each_dev(&pci_bus_type, NULL, m,
+                               show_device_domain_translation);
 }
 DEFINE_SHOW_ATTRIBUTE(domain_translation_struct);
 
diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
index 1af4b6562266..cacae8bdaa65 100644
--- a/drivers/iommu/intel/iommu.c
+++ b/drivers/iommu/intel/iommu.c
@@ -314,7 +314,7 @@ static int iommu_skip_te_disable;
 #define IDENTMAP_GFX           2
 #define IDENTMAP_AZALIA                4
 
-DEFINE_SPINLOCK(device_domain_lock);
+static DEFINE_SPINLOCK(device_domain_lock);
 static LIST_HEAD(device_domain_list);
 
 /*
-- 
2.25.1

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

Reply via email to