mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-05-01 21:04:03 +00:00
iommu/amd: Introduce free_sub_pt() function
The function is a more generic version of free_pagetable() and will be used to free only specific sub-trees of a page-table. Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
ac3a7092eb
commit
409afa44f9
1 changed files with 13 additions and 5 deletions
|
@ -1367,12 +1367,10 @@ DEFINE_FREE_PT_FN(l4, free_pt_l3)
|
||||||
DEFINE_FREE_PT_FN(l5, free_pt_l4)
|
DEFINE_FREE_PT_FN(l5, free_pt_l4)
|
||||||
DEFINE_FREE_PT_FN(l6, free_pt_l5)
|
DEFINE_FREE_PT_FN(l6, free_pt_l5)
|
||||||
|
|
||||||
static void free_pagetable(struct protection_domain *domain)
|
static struct page *free_sub_pt(unsigned long root, int mode,
|
||||||
|
struct page *freelist)
|
||||||
{
|
{
|
||||||
unsigned long root = (unsigned long)domain->pt_root;
|
switch (mode) {
|
||||||
struct page *freelist = NULL;
|
|
||||||
|
|
||||||
switch (domain->mode) {
|
|
||||||
case PAGE_MODE_NONE:
|
case PAGE_MODE_NONE:
|
||||||
break;
|
break;
|
||||||
case PAGE_MODE_1_LEVEL:
|
case PAGE_MODE_1_LEVEL:
|
||||||
|
@ -1397,6 +1395,16 @@ static void free_pagetable(struct protection_domain *domain)
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return freelist;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void free_pagetable(struct protection_domain *domain)
|
||||||
|
{
|
||||||
|
unsigned long root = (unsigned long)domain->pt_root;
|
||||||
|
struct page *freelist = NULL;
|
||||||
|
|
||||||
|
free_sub_pt(root, domain->mode, freelist);
|
||||||
|
|
||||||
free_page_list(freelist);
|
free_page_list(freelist);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue