浏览代码

intel-iommu: Change dma_addr_level_pte() to dma_pfn_level_pte()

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
David Woodhouse 16 年之前
父节点
当前提交
90dcfb5eb2
共有 1 个文件被更改,包括 7 次插入5 次删除
  1. 7 5
      drivers/pci/intel-iommu.c

+ 7 - 5
drivers/pci/intel-iommu.c

@@ -740,8 +740,9 @@ static struct dma_pte * addr_to_dma_pte(struct dmar_domain *domain, u64 addr)
 }
 }
 
 
 /* return address's pte at specific level */
 /* return address's pte at specific level */
-static struct dma_pte *dma_addr_level_pte(struct dmar_domain *domain, u64 addr,
-		int level)
+static struct dma_pte *dma_pfn_level_pte(struct dmar_domain *domain,
+					 unsigned long pfn,
+					 int level)
 {
 {
 	struct dma_pte *parent, *pte = NULL;
 	struct dma_pte *parent, *pte = NULL;
 	int total = agaw_to_level(domain->agaw);
 	int total = agaw_to_level(domain->agaw);
@@ -749,7 +750,7 @@ static struct dma_pte *dma_addr_level_pte(struct dmar_domain *domain, u64 addr,
 
 
 	parent = domain->pgd;
 	parent = domain->pgd;
 	while (level <= total) {
 	while (level <= total) {
-		offset = pfn_level_offset(addr >> VTD_PAGE_SHIFT, total);
+		offset = pfn_level_offset(pfn, total);
 		pte = &parent[offset];
 		pte = &parent[offset];
 		if (level == total)
 		if (level == total)
 			return pte;
 			return pte;
@@ -768,7 +769,7 @@ static void dma_pte_clear_one(struct dmar_domain *domain, u64 addr)
 	struct dma_pte *pte = NULL;
 	struct dma_pte *pte = NULL;
 
 
 	/* get last level pte */
 	/* get last level pte */
-	pte = dma_addr_level_pte(domain, addr, 1);
+	pte = dma_pfn_level_pte(domain, addr >> VTD_PAGE_SHIFT, 1);
 
 
 	if (pte) {
 	if (pte) {
 		dma_clear_pte(pte);
 		dma_clear_pte(pte);
@@ -817,7 +818,8 @@ static void dma_pte_free_pagetable(struct dmar_domain *domain,
 			return;
 			return;
 
 
 		while (tmp < end) {
 		while (tmp < end) {
-			pte = dma_addr_level_pte(domain, tmp, level);
+			pte = dma_pfn_level_pte(domain, tmp >> VTD_PAGE_SHIFT,
+						level);
 			if (pte) {
 			if (pte) {
 				free_pgtable_page(
 				free_pgtable_page(
 					phys_to_virt(dma_pte_addr(pte)));
 					phys_to_virt(dma_pte_addr(pte)));