Loading drivers/iommu/amd_iommu.c +8 −24 Original line number Diff line number Diff line Loading @@ -1428,8 +1428,8 @@ static unsigned long iommu_unmap_page(struct protection_domain *dom, unsigned long bus_addr, unsigned long page_size) { unsigned long long unmap_size, unmapped; unsigned long pte_pgsize; unsigned long long unmapped; unsigned long unmap_size; u64 *pte; BUG_ON(!is_power_of_2(page_size)); Loading @@ -1438,27 +1438,11 @@ static unsigned long iommu_unmap_page(struct protection_domain *dom, while (unmapped < page_size) { pte = fetch_pte(dom, bus_addr, &pte_pgsize); pte = fetch_pte(dom, bus_addr, &unmap_size); if (!pte) { /* * No PTE for this address * move forward in 4kb steps */ unmap_size = PAGE_SIZE; } else if (PM_PTE_LEVEL(*pte) == 0) { /* 4kb PTE found for this address */ unmap_size = PAGE_SIZE; *pte = 0ULL; } else { int count, i; /* Large PTE found which maps this address */ unmap_size = PTE_PAGE_SIZE(*pte); if (pte) { int i, count; /* Only unmap from the first pte in the page */ if ((unmap_size - 1) & bus_addr) break; count = PAGE_SIZE_PTE_COUNT(unmap_size); for (i = 0; i < count; i++) pte[i] = 0ULL; Loading Loading
drivers/iommu/amd_iommu.c +8 −24 Original line number Diff line number Diff line Loading @@ -1428,8 +1428,8 @@ static unsigned long iommu_unmap_page(struct protection_domain *dom, unsigned long bus_addr, unsigned long page_size) { unsigned long long unmap_size, unmapped; unsigned long pte_pgsize; unsigned long long unmapped; unsigned long unmap_size; u64 *pte; BUG_ON(!is_power_of_2(page_size)); Loading @@ -1438,27 +1438,11 @@ static unsigned long iommu_unmap_page(struct protection_domain *dom, while (unmapped < page_size) { pte = fetch_pte(dom, bus_addr, &pte_pgsize); pte = fetch_pte(dom, bus_addr, &unmap_size); if (!pte) { /* * No PTE for this address * move forward in 4kb steps */ unmap_size = PAGE_SIZE; } else if (PM_PTE_LEVEL(*pte) == 0) { /* 4kb PTE found for this address */ unmap_size = PAGE_SIZE; *pte = 0ULL; } else { int count, i; /* Large PTE found which maps this address */ unmap_size = PTE_PAGE_SIZE(*pte); if (pte) { int i, count; /* Only unmap from the first pte in the page */ if ((unmap_size - 1) & bus_addr) break; count = PAGE_SIZE_PTE_COUNT(unmap_size); for (i = 0; i < count; i++) pte[i] = 0ULL; Loading