Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 38a76eee authored by Joerg Roedel's avatar Joerg Roedel
Browse files

x86/amd-iommu: Use fetch_pte in iommu_unmap_page



Instead of reimplementing existing logic use fetch_pte to
walk the page table in iommu_unmap_page.

Signed-off-by: default avatarJoerg Roedel <joerg.roedel@amd.com>
parent 9355a081
Loading
Loading
Loading
Loading
+3 −16
Original line number Diff line number Diff line
@@ -546,22 +546,9 @@ 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);

	if (pte)
		*pte = 0;
}