From 488ef16266ed5351506baae49cc951a6892edb04 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 3 Jan 2016 11:15:47 +0100 Subject: [PATCH] use correct boundaries for the VMA reservation - for the kernel we use huge pages => use 2MB boundaries for the VMA reservation --- hermit/mm/vma.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hermit/mm/vma.c b/hermit/mm/vma.c index 77897641d..0f3e44986 100644 --- a/hermit/mm/vma.c +++ b/hermit/mm/vma.c @@ -39,6 +39,9 @@ extern const void kernel_start; extern const void kernel_end; +#define PAGE_2M_FLOOR(addr) (((addr) + (1L << 21) - 1) & (-1L << 21)) +#define PAGE_2M_CEIL(addr) ( (addr) & (-1L << 21)) + /* * Kernel space VMA list and lock * @@ -55,9 +58,13 @@ int vma_init(void) { int ret; + kprintf("vma_init: reserve vma region 0x%llx - 0x%llx\n", + PAGE_2M_CEIL((size_t) &kernel_start), + PAGE_2M_FLOOR((size_t) &kernel_end)); + // add Kernel - ret = vma_add(PAGE_CEIL((size_t) &kernel_start), - PAGE_FLOOR((size_t) &kernel_end), + ret = vma_add(PAGE_2M_CEIL((size_t) &kernel_start), + PAGE_2M_FLOOR((size_t) &kernel_end), VMA_READ|VMA_WRITE|VMA_EXECUTE|VMA_CACHEABLE); if (BUILTIN_EXPECT(ret, 0)) goto out;