Skip to content

Commit f27aa70

Browse files
lifeixwenlingz
authored andcommitted
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>
1 parent 7c2198c commit f27aa70

File tree

3 files changed

+39
-25
lines changed

3 files changed

+39
-25
lines changed

hypervisor/arch/x86/pagetable.c

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ static void modify_or_del_pde(const uint64_t *pdpte, uint64_t vaddr_start, uint6
125125
panic("invalid op, pde not present");
126126
}
127127
if (pde_large(*pde) != 0UL) {
128-
if (vaddr_next > vaddr_end || !mem_aligned_check(vaddr, PDE_SIZE)) {
128+
if ((vaddr_next > vaddr_end) || (!mem_aligned_check(vaddr, PDE_SIZE))) {
129129
split_large_page(pde, IA32E_PD, vaddr, mem_ops);
130130
} else {
131131
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
167167
panic("invalid op, pdpte not present");
168168
}
169169
if (pdpte_large(*pdpte) != 0UL) {
170-
if (vaddr_next > vaddr_end ||
171-
!mem_aligned_check(vaddr, PDPTE_SIZE)) {
170+
if ((vaddr_next > vaddr_end) ||
171+
(!mem_aligned_check(vaddr, PDPTE_SIZE))) {
172172
split_large_page(pdpte, IA32E_PDPT, vaddr, mem_ops);
173173
} else {
174174
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
376376
*/
377377
uint64_t *lookup_address(uint64_t *pml4_page, uint64_t addr, uint64_t *pg_size, const struct memory_ops *mem_ops)
378378
{
379+
uint64_t *pret = NULL;
380+
bool present = true;
379381
uint64_t *pml4e, *pdpte, *pde, *pte;
380382

381383
pml4e = pml4e_offset(pml4_page, addr);
382-
if (mem_ops->pgentry_present(*pml4e) == 0UL) {
383-
return NULL;
384+
present = (mem_ops->pgentry_present(*pml4e) != 0UL);
385+
386+
if (present) {
387+
pdpte = pdpte_offset(pml4e, addr);
388+
present = (mem_ops->pgentry_present(*pdpte) != 0UL);
389+
if (present) {
390+
if (pdpte_large(*pdpte) != 0UL) {
391+
*pg_size = PDPTE_SIZE;
392+
pret = pdpte;
393+
}
394+
}
384395
}
385396

386-
pdpte = pdpte_offset(pml4e, addr);
387-
if (mem_ops->pgentry_present(*pdpte) == 0UL) {
388-
return NULL;
389-
} else if (pdpte_large(*pdpte) != 0UL) {
390-
*pg_size = PDPTE_SIZE;
391-
return pdpte;
397+
if (present && (pret == NULL)) {
398+
pde = pde_offset(pdpte, addr);
399+
present = (mem_ops->pgentry_present(*pde) != 0UL);
400+
if (present) {
401+
if (pde_large(*pde) != 0UL) {
402+
*pg_size = PDE_SIZE;
403+
pret = pde;
404+
}
405+
}
392406
}
393407

394-
pde = pde_offset(pdpte, addr);
395-
if (mem_ops->pgentry_present(*pde) == 0UL) {
396-
return NULL;
397-
} else if (pde_large(*pde) != 0UL) {
398-
*pg_size = PDE_SIZE;
399-
return pde;
408+
if (present && (pret == NULL)) {
409+
pte = pte_offset(pde, addr);
410+
present = (mem_ops->pgentry_present(*pte) != 0UL);
411+
if (present) {
412+
*pg_size = PTE_SIZE;
413+
pret = pte;
414+
}
400415
}
401416

402-
pte = pte_offset(pde, addr);
403-
if (mem_ops->pgentry_present(*pte) == 0UL) {
404-
return NULL;
405-
} else {
406-
*pg_size = PTE_SIZE;
407-
return pte;
408-
}
417+
return pret;
409418
}

hypervisor/include/arch/x86/e820.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
* SPDX-License-Identifier: BSD-3-Clause
55
*/
66

7+
#ifndef E820_H
8+
#define E820_H
9+
710
struct e820_mem_params {
811
uint64_t mem_bottom;
912
uint64_t mem_top;
@@ -43,3 +46,5 @@ const struct e820_mem_params *get_e820_mem_info(void);
4346
#define NUM_E820_ENTRIES 5U
4447
extern const struct e820_entry e820_default_entries[NUM_E820_ENTRIES];
4548
#endif
49+
50+
#endif

hypervisor/include/arch/x86/page.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#define PT_PAGE_NUM(size) (((size) + PDE_SIZE - 1UL) >> PDE_SHIFT)
2121

2222
/* The size of the guest physical address space, covered by the EPT page table of a VM */
23-
#define EPT_ADDRESS_SPACE(size) ((size != 0UL) ? (size + PLATFORM_LO_MMIO_SIZE) : 0UL)
23+
#define EPT_ADDRESS_SPACE(size) (((size) != 0UL) ? ((size) + PLATFORM_LO_MMIO_SIZE) : 0UL)
2424

2525
#define TRUSTY_PML4_PAGE_NUM(size) (1UL)
2626
#define TRUSTY_PDPT_PAGE_NUM(size) (1UL)

0 commit comments

Comments
 (0)