1
0
Fork 0

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>
hifive-unleashed-5.1
Joerg Roedel 2018-11-09 12:07:07 +01:00
parent ac3a7092eb
commit 409afa44f9
1 changed files with 13 additions and 5 deletions

View File

@ -1367,12 +1367,10 @@ DEFINE_FREE_PT_FN(l4, free_pt_l3)
DEFINE_FREE_PT_FN(l5, free_pt_l4)
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;
struct page *freelist = NULL;
switch (domain->mode) {
switch (mode) {
case PAGE_MODE_NONE:
break;
case PAGE_MODE_1_LEVEL:
@ -1397,6 +1395,16 @@ static void free_pagetable(struct protection_domain *domain)
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);
}