From bf1f66ababba541b34bb3188555794882676091a Mon Sep 17 00:00:00 2001 From: "Zhao, Yu" Date: Fri, 13 Feb 2009 17:55:49 +0800 Subject: [PATCH] --- yaml --- r: 140235 b: refs/heads/master c: afeeb7cebbd223ffee303fd8de4ba97458b13581 h: refs/heads/master i: 140233: 24c9e6750766f63dad62ef236daddc832a0a13cd 140231: 4f5767042f4a44802caeb48e9a02830c0d7c4d87 v: v3 --- [refs] | 2 +- trunk/drivers/pci/intel-iommu.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 836952482eb6..3a997054ab0f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4cf2e75d0bec15d945972b005056c4a8731b82cf +refs/heads/master: afeeb7cebbd223ffee303fd8de4ba97458b13581 diff --git a/trunk/drivers/pci/intel-iommu.c b/trunk/drivers/pci/intel-iommu.c index 0c12d06bade6..002c8b95edf8 100644 --- a/trunk/drivers/pci/intel-iommu.c +++ b/trunk/drivers/pci/intel-iommu.c @@ -718,15 +718,17 @@ static void dma_pte_clear_one(struct dmar_domain *domain, u64 addr) static void dma_pte_clear_range(struct dmar_domain *domain, u64 start, u64 end) { int addr_width = agaw_to_width(domain->agaw); + int npages; start &= (((u64)1) << addr_width) - 1; end &= (((u64)1) << addr_width) - 1; /* in case it's partial page */ start = PAGE_ALIGN(start); end &= PAGE_MASK; + npages = (end - start) / VTD_PAGE_SIZE; /* we don't need lock here, nobody else touches the iova range */ - while (start < end) { + while (npages--) { dma_pte_clear_one(domain, start); start += VTD_PAGE_SIZE; }