Skip to content

Commit db75c95

Browse files
LuBaolujoergroedel
authored andcommitted
iommu/vt-d: Fold __dmar_remove_one_dev_info() into its caller
Fold __dmar_remove_one_dev_info() into dmar_remove_one_dev_info() which is its only caller. Make the spin lock critical range only cover the device list change code and remove some unnecessary checks. Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Link: https://lore.kernel.org/r/20220706025524.2904370-10-baolu.lu@linux.intel.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 parent 79d82ce commit db75c95

1 file changed

Lines changed: 8 additions & 24 deletions

File tree

drivers/iommu/intel/iommu.c

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,6 @@ static LIST_HEAD(dmar_satc_units);
295295
static int g_num_of_iommus;
296296

297297
static void dmar_remove_one_dev_info(struct device *dev);
298-
static void __dmar_remove_one_dev_info(struct device_domain_info *info);
299298

300299
int dmar_disabled = !IS_ENABLED(CONFIG_INTEL_IOMMU_DEFAULT_ON);
301300
int intel_iommu_sm = IS_ENABLED(CONFIG_INTEL_IOMMU_SCALABLE_MODE_DEFAULT_ON);
@@ -4137,20 +4136,12 @@ static void domain_context_clear(struct device_domain_info *info)
41374136
&domain_context_clear_one_cb, info);
41384137
}
41394138

4140-
static void __dmar_remove_one_dev_info(struct device_domain_info *info)
4139+
static void dmar_remove_one_dev_info(struct device *dev)
41414140
{
4142-
struct dmar_domain *domain;
4143-
struct intel_iommu *iommu;
4144-
4145-
assert_spin_locked(&device_domain_lock);
4146-
4147-
if (WARN_ON(!info))
4148-
return;
4149-
4150-
iommu = info->iommu;
4151-
domain = info->domain;
4141+
struct device_domain_info *info = dev_iommu_priv_get(dev);
4142+
struct intel_iommu *iommu = info->iommu;
41524143

4153-
if (info->dev && !dev_is_real_dma_subdevice(info->dev)) {
4144+
if (!dev_is_real_dma_subdevice(info->dev)) {
41544145
if (dev_is_pci(info->dev) && sm_supported(iommu))
41554146
intel_pasid_tear_down_entry(iommu, info->dev,
41564147
PASID_RID2PASID, false);
@@ -4160,19 +4151,12 @@ static void __dmar_remove_one_dev_info(struct device_domain_info *info)
41604151
intel_pasid_free_table(info->dev);
41614152
}
41624153

4163-
list_del(&info->link);
4164-
domain_detach_iommu(domain, iommu);
4165-
}
4166-
4167-
static void dmar_remove_one_dev_info(struct device *dev)
4168-
{
4169-
struct device_domain_info *info;
4170-
41714154
spin_lock(&device_domain_lock);
4172-
info = dev_iommu_priv_get(dev);
4173-
if (info)
4174-
__dmar_remove_one_dev_info(info);
4155+
list_del(&info->link);
41754156
spin_unlock(&device_domain_lock);
4157+
4158+
domain_detach_iommu(info->domain, iommu);
4159+
info->domain = NULL;
41764160
}
41774161

41784162
static int md_domain_init(struct dmar_domain *domain, int guest_width)

0 commit comments

Comments
 (0)