x86/amd-iommu: Use fetch_pte in iommu_unmap_page
authorJoerg Roedel <joerg.roedel@amd.com>
Wed, 2 Sep 2009 15:02:47 +0000 (17:02 +0200)
committerJoerg Roedel <joerg.roedel@amd.com>
Thu, 3 Sep 2009 14:03:41 +0000 (16:03 +0200)
Instead of reimplementing existing logic use fetch_pte to
walk the page table in iommu_unmap_page.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
arch/x86/kernel/amd_iommu.c

index 29bcd35..5e52798 100644 (file)
@@ -546,23 +546,10 @@ static int iommu_map_page(struct protection_domain *dom,
 static void iommu_unmap_page(struct protection_domain *dom,
                             unsigned long bus_addr)
 {
-       u64 *pte;
-
-       pte = &dom->pt_root[IOMMU_PTE_L2_INDEX(bus_addr)];
-
-       if (!IOMMU_PTE_PRESENT(*pte))
-               return;
-
-       pte = IOMMU_PTE_PAGE(*pte);
-       pte = &pte[IOMMU_PTE_L1_INDEX(bus_addr)];
-
-       if (!IOMMU_PTE_PRESENT(*pte))
-               return;
-
-       pte = IOMMU_PTE_PAGE(*pte);
-       pte = &pte[IOMMU_PTE_L1_INDEX(bus_addr)];
+       u64 *pte = fetch_pte(dom, bus_addr);
 
-       *pte = 0;
+       if (pte)
+               *pte = 0;
 }
 
 /*