@@ -189,7 +189,8 @@ static inline pte_t* mem_alloc_pt(struct addr_space* as, pte_t* parent, size_t l
189189{
190190 /* Must have lock on as and va section to call */
191191 size_t ptsize = NUM_PAGES (pt_size (& as -> pt , lvl + 1 ));
192- struct ppages ppage = mem_alloc_ppages (as -> colors , ptsize , ptsize > 1 ? true : false);
192+ struct ppages ppage =
193+ mem_alloc_ppages (as -> colors , ptsize , ptsize > 1 ? MEM_ALIGN_PPAGES : MEM_DONT_ALIGN_PPAGES );
193194 if (ppage .num_pages == 0 ) {
194195 return NULL ;
195196 }
@@ -547,7 +548,8 @@ static bool mem_map(struct addr_space* as, vaddr_t va, struct ppages* ppages, si
547548 while ((entry < nentries ) && (count < num_pages ) &&
548549 (num_pages - count >= lvlsz / PAGE_SIZE )) {
549550 if (ppages == NULL ) {
550- struct ppages temp = mem_alloc_ppages (as -> colors , lvlsz / PAGE_SIZE , true);
551+ struct ppages temp =
552+ mem_alloc_ppages (as -> colors , lvlsz / PAGE_SIZE , MEM_ALIGN_PPAGES );
551553 if (temp .num_pages < lvlsz / PAGE_SIZE ) {
552554 if (lvl == (as -> pt .dscr -> lvls - 1 )) {
553555 // TODO: free previously allocated pages
@@ -671,8 +673,8 @@ bool mem_map_reclr(struct addr_space* as, vaddr_t va, struct ppages* ppages, siz
671673 .colors = ~as -> colors };
672674 mem_free_ppages (& unused_pages );
673675
674- mem_unmap (& cpu ()-> as , reclrd_va_base , reclrd_num , false );
675- mem_unmap (& cpu ()-> as , phys_va_base , num_pages , false );
676+ mem_unmap (& cpu ()-> as , reclrd_va_base , reclrd_num , MEM_DONT_FREE_PAGES );
677+ mem_unmap (& cpu ()-> as , phys_va_base , num_pages , MEM_DONT_FREE_PAGES );
676678
677679 return true;
678680}
@@ -712,7 +714,7 @@ vaddr_t mem_map_cpy(struct addr_space* ass, struct addr_space* asd, vaddr_t vas,
712714
713715static void * copy_space (void * base , const size_t size , struct ppages * pages )
714716{
715- * pages = mem_alloc_ppages (cpu ()-> as .colors , NUM_PAGES (size ), false );
717+ * pages = mem_alloc_ppages (cpu ()-> as .colors , NUM_PAGES (size ), MEM_DONT_ALIGN_PPAGES );
716718 vaddr_t va = mem_alloc_vpage (& cpu ()-> as , SEC_HYP_PRIVATE , INVALID_VA , NUM_PAGES (size ));
717719 mem_map (& cpu ()-> as , va , pages , NUM_PAGES (size ), PTE_HYP_FLAGS );
718720 memcpy ((void * )va , base , size );
@@ -873,14 +875,14 @@ void mem_color_hypervisor(const paddr_t load_addr, struct mem_region* root_regio
873875 va = mem_alloc_vpage (& cpu ()-> as , SEC_HYP_GLOBAL , INVALID_VA , p_image .num_pages );
874876 mem_map (& cpu ()-> as , va , & p_image , p_image .num_pages , PTE_HYP_FLAGS );
875877 memset ((void * )va , 0 , p_image .num_pages * PAGE_SIZE );
876- mem_unmap (& cpu ()-> as , va , p_image .num_pages , true );
878+ mem_unmap (& cpu ()-> as , va , p_image .num_pages , MEM_FREE_PAGES );
877879
878880 p_image = mem_ppages_get (load_addr + image_load_size + vm_image_size ,
879881 NUM_PAGES (image_noload_size ));
880882 va = mem_alloc_vpage (& cpu ()-> as , SEC_HYP_GLOBAL , INVALID_VA , p_image .num_pages );
881883 mem_map (& cpu ()-> as , va , & p_image , p_image .num_pages , PTE_HYP_FLAGS );
882884 memset ((void * )va , 0 , p_image .num_pages * PAGE_SIZE );
883- mem_unmap (& cpu ()-> as , va , p_image .num_pages , true );
885+ mem_unmap (& cpu ()-> as , va , p_image .num_pages , MEM_FREE_PAGES );
884886
885887 p_bitmap = mem_ppages_get (load_addr + image_size + vm_image_size +
886888 (cpu_boot_size * platform .cpu_num ),
@@ -889,15 +891,15 @@ void mem_color_hypervisor(const paddr_t load_addr, struct mem_region* root_regio
889891 va = mem_alloc_vpage (& cpu ()-> as , SEC_HYP_GLOBAL , INVALID_VA , p_bitmap .num_pages );
890892 mem_map (& cpu ()-> as , va , & p_bitmap , p_bitmap .num_pages , PTE_HYP_FLAGS );
891893 memset ((void * )va , 0 , p_bitmap .num_pages * PAGE_SIZE );
892- mem_unmap (& cpu ()-> as , va , p_bitmap .num_pages , true );
894+ mem_unmap (& cpu ()-> as , va , p_bitmap .num_pages , MEM_FREE_PAGES );
893895 }
894896
895897 p_cpu = mem_ppages_get (load_addr + image_size + vm_image_size + (cpu_boot_size * cpu ()-> id ),
896898 cpu_boot_size / PAGE_SIZE );
897899 va = mem_alloc_vpage (& cpu ()-> as , SEC_HYP_PRIVATE , INVALID_VA , p_cpu .num_pages );
898900 mem_map (& cpu ()-> as , va , & p_cpu , p_cpu .num_pages , PTE_HYP_FLAGS );
899901 memset ((void * )va , 0 , p_cpu .num_pages * PAGE_SIZE );
900- mem_unmap (& cpu ()-> as , va , p_cpu .num_pages , false );
902+ mem_unmap (& cpu ()-> as , va , p_cpu .num_pages , MEM_DONT_FREE_PAGES );
901903}
902904
903905void as_init (struct addr_space * as , enum AS_TYPE type , asid_t id , pte_t * root_pt , colormap_t colors )
0 commit comments