summaryrefslogtreecommitdiff
path: root/drivers/iommu/intel-iommu.c
diff options
context:
space:
mode:
authorJoerg Roedel <joro@8bytes.org>2014-04-16 18:09:40 +0400
committerJoerg Roedel <joro@8bytes.org>2014-04-16 18:09:40 +0400
commit3426cb3d3578eab55ec231e0ce4dfc12ec3abc1f (patch)
treee7b4c02ef4ce3fb11396a3fed33eeb29cba2f124 /drivers/iommu/intel-iommu.c
parentaca1bc4595c5757f01167ab5bfef2a4f8edfcf4f (diff)
parent5ae0566a0fffa09a77ac5996e3854fe91cd87167 (diff)
downloadlinux-3426cb3d3578eab55ec231e0ce4dfc12ec3abc1f.tar.xz
Merge git://git.infradead.org/iommu-2.6 into iommu/fixes
Diffstat (limited to 'drivers/iommu/intel-iommu.c')
-rw-r--r--drivers/iommu/intel-iommu.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 69fa7da5e48b..f256ffc02e29 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -1009,11 +1009,13 @@ static struct page *dma_pte_list_pagetables(struct dmar_domain *domain,
if (level == 1)
return freelist;
- for (pte = page_address(pg); !first_pte_in_page(pte); pte++) {
+ pte = page_address(pg);
+ do {
if (dma_pte_present(pte) && !dma_pte_superpage(pte))
freelist = dma_pte_list_pagetables(domain, level - 1,
pte, freelist);
- }
+ pte++;
+ } while (!first_pte_in_page(pte));
return freelist;
}
@@ -2235,7 +2237,9 @@ static struct dmar_domain *get_domain_for_dev(struct device *dev, int gaw)
bridge_devfn = dev_tmp->devfn;
}
spin_lock_irqsave(&device_domain_lock, flags);
- info = dmar_search_domain_by_dev_info(segment, bus, devfn);
+ info = dmar_search_domain_by_dev_info(segment,
+ bridge_bus,
+ bridge_devfn);
if (info) {
iommu = info->iommu;
domain = info->domain;