mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 18:11:20 +00:00
AMD IOMMU: make dma_ops_free_pagetable generic
Impact: change code to free pagetables from protection domains The dma_ops_free_pagetable function can only free pagetables from dma_ops domains. Change that to free pagetables of pure protection domains. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
38e817febe
commit
86db2e5d47
1 changed files with 5 additions and 3 deletions
|
@ -587,12 +587,12 @@ static void dma_ops_reserve_addresses(struct dma_ops_domain *dom,
|
||||||
iommu_area_reserve(dom->bitmap, start_page, pages);
|
iommu_area_reserve(dom->bitmap, start_page, pages);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom)
|
static void free_pagetable(struct protection_domain *domain)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
u64 *p1, *p2, *p3;
|
u64 *p1, *p2, *p3;
|
||||||
|
|
||||||
p1 = dma_dom->domain.pt_root;
|
p1 = domain->pt_root;
|
||||||
|
|
||||||
if (!p1)
|
if (!p1)
|
||||||
return;
|
return;
|
||||||
|
@ -613,6 +613,8 @@ static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom)
|
||||||
}
|
}
|
||||||
|
|
||||||
free_page((unsigned long)p1);
|
free_page((unsigned long)p1);
|
||||||
|
|
||||||
|
domain->pt_root = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -624,7 +626,7 @@ static void dma_ops_domain_free(struct dma_ops_domain *dom)
|
||||||
if (!dom)
|
if (!dom)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dma_ops_free_pagetable(dom);
|
free_pagetable(&dom->domain);
|
||||||
|
|
||||||
kfree(dom->pte_pages);
|
kfree(dom->pte_pages);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue