diff --git a/src/arch/x86/kernel/boot.c b/src/arch/x86/kernel/boot.c index c349f1624..03ee8cc49 100644 --- a/src/arch/x86/kernel/boot.c +++ b/src/arch/x86/kernel/boot.c @@ -72,7 +72,10 @@ BOOT_CODE static bool_t arch_init_freemem(p_region_t ui_p_reg, mem_p_regs_t *mem_p_regs, word_t extra_bi_size_bits) { - ui_p_reg.start = 0; + // Extend the reserved region down to include the base of the kernel image. + // KERNEL_ELF_PADDR_BASE is the lowest physical load address used + // in the x86 linker script. + ui_p_reg.start = KERNEL_ELF_PADDR_BASE; reserved[0] = paddr_to_pptr_reg(ui_p_reg); return init_freemem(mem_p_regs->count, mem_p_regs->list, MAX_RESERVED, reserved, it_v_reg, extra_bi_size_bits); diff --git a/src/arch/x86/kernel/boot_sys.c b/src/arch/x86/kernel/boot_sys.c index 8b89efc18..c52c4e626 100644 --- a/src/arch/x86/kernel/boot_sys.c +++ b/src/arch/x86/kernel/boot_sys.c @@ -213,7 +213,7 @@ static BOOT_CODE bool_t add_mem_p_regs(p_region_t reg) printf("Adding physical memory region 0x%lx-0x%lx\n", reg.start, reg.end); boot_state.mem_p_regs.list[boot_state.mem_p_regs.count] = reg; boot_state.mem_p_regs.count++; - return reserve_region(reg); + return true; } /*