hv: pgtable: remove get_default_access_right API

Use default_access_right field to replace get_default_access_right API.

Tracked-On: #5830
Signed-off-by: Li Fei1 <fei1.li@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Li Fei1 2021-03-08 11:41:13 +08:00 committed by wenlingz
parent 84c3e76b83
commit ef98fa69ce
3 changed files with 7 additions and 17 deletions

View File

@ -103,11 +103,6 @@ static inline bool large_page_support(enum _page_table_level level, __unused uin
return support;
}
static inline uint64_t ppt_get_default_access_right(void)
{
return (PAGE_PRESENT | PAGE_RW | PAGE_USER);
}
static inline void ppt_clflush_pagewalk(const void* entry __attribute__((unused)))
{
}
@ -121,9 +116,9 @@ static inline void nop_tweak_exe_right(uint64_t *entry __attribute__((unused)))
static inline void nop_recover_exe_right(uint64_t *entry __attribute__((unused))) {}
const struct memory_ops ppt_mem_ops = {
.default_access_right = (PAGE_PRESENT | PAGE_RW | PAGE_USER),
.pool = &ppt_page_pool,
.large_page_support = large_page_support,
.get_default_access_right = ppt_get_default_access_right,
.pgentry_present = ppt_pgentry_present,
.clflush_pagewalk = ppt_clflush_pagewalk,
.tweak_exe_right = nop_tweak_exe_right,
@ -215,11 +210,6 @@ static inline bool use_large_page(enum _page_table_level level, uint64_t prot)
return ret;
}
static inline uint64_t ept_get_default_access_right(void)
{
return EPT_RWX;
}
static inline uint64_t ept_pgentry_present(uint64_t pte)
{
return pte & EPT_RWX;
@ -265,7 +255,7 @@ void init_ept_mem_ops(struct memory_ops *mem_ops, uint16_t vm_id)
}
mem_ops->pool = &ept_page_pool[vm_id];
mem_ops->get_default_access_right = ept_get_default_access_right;
mem_ops->default_access_right = EPT_RWX;
mem_ops->pgentry_present = ept_pgentry_present;
mem_ops->clflush_pagewalk = ept_clflush_pagewalk;
mem_ops->large_page_support = large_page_support;

View File

@ -70,7 +70,7 @@ static void split_large_page(uint64_t *pte, enum _page_table_level level,
paddr += paddrinc;
}
ref_prot = mem_ops->get_default_access_right();
ref_prot = mem_ops->default_access_right;
set_pgentry(pte, hva2hpa((void *)pbase) | ref_prot, mem_ops);
/* TODO: flush the TLB */
@ -335,7 +335,7 @@ static void add_pde(const uint64_t *pdpte, uint64_t paddr_start, uint64_t vaddr_
break; /* done */
} else {
void *pt_page = alloc_page(mem_ops->pool);
construct_pgentry(pde, pt_page, mem_ops->get_default_access_right(), mem_ops);
construct_pgentry(pde, pt_page, mem_ops->default_access_right, mem_ops);
}
}
add_pte(pde, paddr, vaddr, vaddr_end, prot, mem_ops);
@ -384,7 +384,7 @@ static void add_pdpte(const uint64_t *pml4e, uint64_t paddr_start, uint64_t vadd
break; /* done */
} else {
void *pd_page = alloc_page(mem_ops->pool);
construct_pgentry(pdpte, pd_page, mem_ops->get_default_access_right(), mem_ops);
construct_pgentry(pdpte, pd_page, mem_ops->default_access_right, mem_ops);
}
}
add_pde(pdpte, paddr, vaddr, vaddr_end, prot, mem_ops);
@ -421,7 +421,7 @@ void mmu_add(uint64_t *pml4_page, uint64_t paddr_base, uint64_t vaddr_base, uint
pml4e = pml4e_offset(pml4_page, vaddr);
if (mem_ops->pgentry_present(*pml4e) == 0UL) {
void *pdpt_page = alloc_page(mem_ops->pool);
construct_pgentry(pml4e, pdpt_page, mem_ops->get_default_access_right(), mem_ops);
construct_pgentry(pml4e, pdpt_page, mem_ops->default_access_right, mem_ops);
}
add_pdpte(pml4e, paddr, vaddr, vaddr_end, prot, mem_ops);

View File

@ -67,9 +67,9 @@ struct page_pool {
};
struct memory_ops {
uint64_t default_access_right;
struct page_pool *pool;
bool (*large_page_support)(enum _page_table_level level, uint64_t prot);
uint64_t (*get_default_access_right)(void);
uint64_t (*pgentry_present)(uint64_t pte);
void (*clflush_pagewalk)(const void *p);
void (*tweak_exe_right)(uint64_t *entry);