mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 10:40:03 +01:00
SeaBIOS will reserve memory in the e820 as necessary, including BIOS data structures such as the EBDA, any tables it creates or copies into pleace etc. Therefore arrange that the memory map provided by hvmloader to SeaBIOS reserves only things which HVMloader has created. Since ROMBIOS is more tightly coupled with hvmloader we retain the ability to reserve BIOS regions in the hvmloader produced e820 and use that from the ROMBIOS backend. The code for this could probably have been simpler but the existing code avoids overlapping e820 areas and so the new code does the same (many guest OSes sanitize the e820 map to handle this, but I wouldn't trust that all do, so I didn't take the risk) For ROMBIOS the resulting e820 map as seen by the guest is the same except the reserved regions at 0x9e000-0x9fc00,0x9fc00-0xa0000 are merged into a single region 0x9e000-0xa0000 (Linux guests sanitize the e820 to look like this anyway). For SeaBIOS the result is that the lowmem reserved region is from 0x9f000-0xa0000 rather than 0x9e000-0xa0000 which correctly reflects SeaBIOS's actual usage. Signed-off-by: Ian Campbell <ian.campbell@citrix.com>