From 74f052de33cb14d7a1656079a53102a7cbbb6e75 Mon Sep 17 00:00:00 2001 From: jiangdongxu Date: Fri, 11 Feb 2022 16:16:05 +0800 Subject: [PATCH 2/6] seabios: do not give back high ram Oracle 6 and 7 series virtual machines will use the high ram returned by sebios. Since these high ram will not be initialized before kernel used, this will cause a system exception. This patch removes the logic for returning high ram, making the virtual machine will not use this part of the memory, thus avoiding this kernel bug. Signed-off-by: wangxin Signed-off-by: Fangyi Signed-off-by: jiangdongxu --- roms/seabios/src/malloc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/roms/seabios/src/malloc.c b/roms/seabios/src/malloc.c index 3733855caf..5827a6523a 100644 --- a/roms/seabios/src/malloc.c +++ b/roms/seabios/src/malloc.c @@ -549,6 +549,9 @@ malloc_prepboot(void) dprintf(1, "Space available for UMB: %x-%x, %x-%x\n" , RomEnd, base, info->range_start, info->range_end); + // We should not give back unused high ram, to support some special + // guest OS, like oracle linux series. +#ifdef HIGH_MEM_BACK // Give back unused high ram. info = alloc_find_lowest(&ZoneHigh); if (info) { @@ -556,6 +559,7 @@ malloc_prepboot(void) e820_add(info->range_start, giveback, E820_RAM); dprintf(1, "Returned %d bytes of ZoneHigh\n", giveback); } +#endif calcRamSize(); } -- 2.27.0