Skip to content

Commit

Permalink
intel-iommu: Move duplicate list-mangling code into unlink_domain_inf…
Browse files Browse the repository at this point in the history
…o() helper

Now we have four copies of this code, Linus "suggested" it was about time
we stopped copying it and turned it into a helper.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
David Woodhouse authored and Linus Torvalds committed May 25, 2012
1 parent e2ad23d commit 109b9b0
Showing 1 changed file with 13 additions and 16 deletions.
29 changes: 13 additions & 16 deletions drivers/iommu/intel-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1907,6 +1907,15 @@ static void iommu_detach_dev(struct intel_iommu *iommu, u8 bus, u8 devfn)
iommu->flush.flush_iotlb(iommu, 0, 0, 0, DMA_TLB_GLOBAL_FLUSH);
}

static inline void unlink_domain_info(struct device_domain_info *info)
{
assert_spin_locked(&device_domain_lock);
list_del(&info->link);
list_del(&info->global);
if (info->dev)
info->dev->dev.archdata.iommu = NULL;
}

static void domain_remove_dev_info(struct dmar_domain *domain)
{
struct device_domain_info *info;
Expand All @@ -1917,10 +1926,7 @@ static void domain_remove_dev_info(struct dmar_domain *domain)
while (!list_empty(&domain->devices)) {
info = list_entry(domain->devices.next,
struct device_domain_info, link);
list_del(&info->link);
list_del(&info->global);
if (info->dev)
info->dev->dev.archdata.iommu = NULL;
unlink_domain_info(info);
spin_unlock_irqrestore(&device_domain_lock, flags);

iommu_disable_dev_iotlb(info);
Expand Down Expand Up @@ -2302,9 +2308,7 @@ static int domain_add_dev_info(struct dmar_domain *domain,
ret = domain_context_mapping(domain, pdev, translation);
if (ret) {
spin_lock_irqsave(&device_domain_lock, flags);
list_del(&info->link);
list_del(&info->global);
pdev->dev.archdata.iommu = NULL;
unlink_domain_info(info);
spin_unlock_irqrestore(&device_domain_lock, flags);
free_devinfo_mem(info);
return ret;
Expand Down Expand Up @@ -3733,10 +3737,7 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain,
if (info->segment == pci_domain_nr(pdev->bus) &&
info->bus == pdev->bus->number &&
info->devfn == pdev->devfn) {
list_del(&info->link);
list_del(&info->global);
if (info->dev)
info->dev->dev.archdata.iommu = NULL;
unlink_domain_info(info);
spin_unlock_irqrestore(&device_domain_lock, flags);

iommu_disable_dev_iotlb(info);
Expand Down Expand Up @@ -3791,11 +3792,7 @@ static void vm_domain_remove_all_dev_info(struct dmar_domain *domain)
while (!list_empty(&domain->devices)) {
info = list_entry(domain->devices.next,
struct device_domain_info, link);
list_del(&info->link);
list_del(&info->global);
if (info->dev)
info->dev->dev.archdata.iommu = NULL;

unlink_domain_info(info);
spin_unlock_irqrestore(&device_domain_lock, flags1);

iommu_disable_dev_iotlb(info);
Expand Down

0 comments on commit 109b9b0

Please sign in to comment.