hv: coding style: refine page related

1) Fix procedure has more than one exit point.
2) Add some brackets to make logical conjunctions more readable.

Tracked-On: #861
Signed-off-by: Li, Fei1 <fei1.li@intel.com>
Acked-by: Anthony Xu <anthony.xu@intel.com>
This commit is contained in:
Li, Fei1 2018-12-19 22:20:08 +08:00 committed by wenlingz
parent 7c2198c422
commit f27aa70fb5
3 changed files with 39 additions and 25 deletions

View File

@ -125,7 +125,7 @@ static void modify_or_del_pde(const uint64_t *pdpte, uint64_t vaddr_start, uint6
panic("invalid op, pde not present");
}
if (pde_large(*pde) != 0UL) {
if (vaddr_next > vaddr_end || !mem_aligned_check(vaddr, PDE_SIZE)) {
if ((vaddr_next > vaddr_end) || (!mem_aligned_check(vaddr, PDE_SIZE))) {
split_large_page(pde, IA32E_PD, vaddr, mem_ops);
} else {
local_modify_or_del_pte(pde, prot_set, prot_clr, type);
@ -167,8 +167,8 @@ static void modify_or_del_pdpte(const uint64_t *pml4e, uint64_t vaddr_start, uin
panic("invalid op, pdpte not present");
}
if (pdpte_large(*pdpte) != 0UL) {
if (vaddr_next > vaddr_end ||
!mem_aligned_check(vaddr, PDPTE_SIZE)) {
if ((vaddr_next > vaddr_end) ||
(!mem_aligned_check(vaddr, PDPTE_SIZE))) {
split_large_page(pdpte, IA32E_PDPT, vaddr, mem_ops);
} else {
local_modify_or_del_pte(pdpte, prot_set, prot_clr, type);
@ -376,34 +376,43 @@ void mmu_add(uint64_t *pml4_page, uint64_t paddr_base, uint64_t vaddr_base, uint
*/
uint64_t *lookup_address(uint64_t *pml4_page, uint64_t addr, uint64_t *pg_size, const struct memory_ops *mem_ops)
{
uint64_t *pret = NULL;
bool present = true;
uint64_t *pml4e, *pdpte, *pde, *pte;
pml4e = pml4e_offset(pml4_page, addr);
if (mem_ops->pgentry_present(*pml4e) == 0UL) {
return NULL;
}
present = (mem_ops->pgentry_present(*pml4e) != 0UL);
if (present) {
pdpte = pdpte_offset(pml4e, addr);
if (mem_ops->pgentry_present(*pdpte) == 0UL) {
return NULL;
} else if (pdpte_large(*pdpte) != 0UL) {
present = (mem_ops->pgentry_present(*pdpte) != 0UL);
if (present) {
if (pdpte_large(*pdpte) != 0UL) {
*pg_size = PDPTE_SIZE;
return pdpte;
pret = pdpte;
}
}
}
if (present && (pret == NULL)) {
pde = pde_offset(pdpte, addr);
if (mem_ops->pgentry_present(*pde) == 0UL) {
return NULL;
} else if (pde_large(*pde) != 0UL) {
present = (mem_ops->pgentry_present(*pde) != 0UL);
if (present) {
if (pde_large(*pde) != 0UL) {
*pg_size = PDE_SIZE;
return pde;
pret = pde;
}
}
}
if (present && (pret == NULL)) {
pte = pte_offset(pde, addr);
if (mem_ops->pgentry_present(*pte) == 0UL) {
return NULL;
} else {
present = (mem_ops->pgentry_present(*pte) != 0UL);
if (present) {
*pg_size = PTE_SIZE;
return pte;
pret = pte;
}
}
return pret;
}

View File

@ -4,6 +4,9 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef E820_H
#define E820_H
struct e820_mem_params {
uint64_t mem_bottom;
uint64_t mem_top;
@ -43,3 +46,5 @@ const struct e820_mem_params *get_e820_mem_info(void);
#define NUM_E820_ENTRIES 5U
extern const struct e820_entry e820_default_entries[NUM_E820_ENTRIES];
#endif
#endif

View File

@ -20,7 +20,7 @@
#define PT_PAGE_NUM(size) (((size) + PDE_SIZE - 1UL) >> PDE_SHIFT)
/* The size of the guest physical address space, covered by the EPT page table of a VM */
#define EPT_ADDRESS_SPACE(size) ((size != 0UL) ? (size + PLATFORM_LO_MMIO_SIZE) : 0UL)
#define EPT_ADDRESS_SPACE(size) (((size) != 0UL) ? ((size) + PLATFORM_LO_MMIO_SIZE) : 0UL)
#define TRUSTY_PML4_PAGE_NUM(size) (1UL)
#define TRUSTY_PDPT_PAGE_NUM(size) (1UL)