Skip to content

Commit

Permalink
fix(bitmap): Correct the bitmap_base for MMU systems
Browse files Browse the repository at this point in the history
In mmu-based systems, the vm_image_size is already encompassed in the
image_size.

Signed-off-by: Miguel Silva <[email protected]>
  • Loading branch information
miguelafsilva5 committed Nov 27, 2024
1 parent a7716bd commit 958e363
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/core/mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,15 +139,20 @@ void* mem_alloc_page(size_t num_pages, enum AS_SEC sec, bool phys_aligned)
static bool root_pool_set_up_bitmap(paddr_t load_addr, struct page_pool* root_pool)
{
size_t image_size = (size_t)(&_image_end - &_image_start);
size_t vm_image_size = (size_t)(&_vm_image_end - &_vm_image_start);
size_t cpu_size = platform.cpu_num * mem_cpu_boot_alloc_size();

size_t bitmap_num_pages =
root_pool->size / (8 * PAGE_SIZE) + ((root_pool->size % (8 * PAGE_SIZE) != 0) ? 1 : 0);
if (root_pool->size <= bitmap_num_pages) {
return false;
}

#ifdef MEM_PROT_MMU
size_t vm_image_size = (size_t)(&_vm_image_end - &_vm_image_start);
size_t bitmap_base = load_addr + image_size + vm_image_size + cpu_size;
#else
size_t bitmap_base = load_addr + image_size + cpu_size;
#endif

struct ppages bitmap_pp = mem_ppages_get(bitmap_base, bitmap_num_pages);
bitmap_t* root_bitmap = (bitmap_t*)mem_alloc_map(&cpu()->as, SEC_HYP_GLOBAL, &bitmap_pp,
Expand Down

0 comments on commit 958e363

Please sign in to comment.