Revert "aarch64/vspace: allow flushing larger .."

This reverts commit 494dd2dd96.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
This commit is contained in:
Gerwin Klein
2024-01-22 14:38:06 +11:00
parent 494dd2dd96
commit 7f4662a791
2 changed files with 6 additions and 19 deletions

View File

@@ -201,21 +201,9 @@ static inline bool_t pte_ptr_get_valid(pte_t *pt)
return (pte_ptr_get_pte_type(pt) != pte_pte_invalid);
}
static inline bool_t pte_is_page_type(pte_t pte)
{
return pte_get_pte_type(pte) == pte_pte_4k_page ||
pte_get_pte_type(pte) == pte_pte_page;
}
/** Return base address for both of pte_4k_page and pte_page */
static inline uint64_t pte_get_page_base_address(pte_t pte)
{
assert(pte_is_page_type(pte));
return pte.words[0] & 0xfffffffff000ull;
}
/** Return base address for both of pte_4k_page and pte_page */
static inline uint64_t pte_page_ptr_get_page_base_address(pte_t *pt)
{
return pte_get_page_base_address(*pt);
uint64_t ret;
ret = (pt->words[0] & 0xfffffffff000ull);
return ret;
}

View File

@@ -1273,7 +1273,6 @@ static exception_t decodeARMVSpaceRootInvocation(word_t invLabel, word_t length,
vspace_root_t *vspaceRoot;
lookupPTSlot_ret_t resolve_ret;
findVSpaceForASID_ret_t find_ret;
pte_t pte;
switch (invLabel) {
case ARMVSpaceClean_Data:
@@ -1332,10 +1331,10 @@ static exception_t decodeARMVSpaceRootInvocation(word_t invLabel, word_t length,
/* Look up the frame containing 'start'. */
resolve_ret = lookupPTSlot(vspaceRoot, start);
pte = *resolve_ret.ptSlot;
/* Check that the returned slot is a page. */
if (!pte_is_page_type(pte)) {
if (!pte_ptr_get_valid(resolve_ret.ptSlot) ||
(pte_pte_table_ptr_get_present(resolve_ret.ptSlot) && resolve_ret.ptBitsLeft > PAGE_BITS)) {
/* Fail silently, as there can't be any stale cached data (for the
* given address space), and getting a syscall error because the
@@ -1354,7 +1353,7 @@ static exception_t decodeARMVSpaceRootInvocation(word_t invLabel, word_t length,
}
/* Calculate the physical start address. */
paddr_t frame_base = pte_get_page_base_address(pte);
paddr_t frame_base = pte_page_ptr_get_page_base_address(resolve_ret.ptSlot);
pstart = frame_base + (start & MASK(resolve_ret.ptBitsLeft));