lkml.org 
[lkml]   [2013]   [Dec]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 3/3] dmar: reduce loop to find multi-devices owned by IOMMU
Date
When try to find if the iommu owns other devices in the domain except the 
device will be moved. It will loop all devices under the domain if the removed
device is the first device in domain devices list.

This patch will improve it and it only loop before find the removed device and
one of other device, so save the loop time and make the code more clear.

Signed-off-by: Youquan Song <youquan.song@intel.com>
---
drivers/iommu/intel-iommu.c | 15 ++++++---------
1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index aa821fc..9f3bf3f 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -3785,7 +3785,7 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain,
struct device_domain_info *info, *tmp;
struct intel_iommu *iommu;
unsigned long flags;
- int found = 0;
+ int found = 0, del = 0;

iommu = device_to_iommu(pci_domain_nr(pdev->bus), pdev->bus->number,
pdev->devfn);
@@ -3806,16 +3806,13 @@ static void domain_remove_one_dev_info(struct dmar_domain *domain,
free_devinfo_mem(info);

spin_lock_irqsave(&device_domain_lock, flags);
-
- if (found)
- break;
- else
- continue;
- }
-
- if (iommu == device_to_iommu(info->segment, info->bus,
+ del = 1;
+ } else if (iommu == device_to_iommu(info->segment, info->bus,
info->devfn))
found = 1;
+
+ if (found & del)
+ break;
}

spin_unlock_irqrestore(&device_domain_lock, flags);
--
1.7.7.4


\
 
 \ /
  Last update: 2013-12-12 18:01    [W:0.030 / U:0.232 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site