[SeaBIOS] placement of emulated flash [was: seabios Improved multi-platform support]
Laszlo Ersek
lersek at redhat.com
Wed Feb 20 17:55:09 CET 2013
Regarding the ACPI tables, OVMF takes them from Xen. It scans 0x000EA020
to 0x000FFFFF for the RSDP and goes from there. See
OvmfPkg/AcpiPlatformDxe/Xen.c.
I'm not sure about the e820 table. In hvmloader's build_e820_table()
[tools/firmware/hvmloader/e820.c], a range starting at RESERVED_MEMBASE
is added to the table:
/*
* Explicitly reserve space for special pages.
* This space starts at RESERVED_MEMBASE an extends to cover various
* fixed hardware mappings (e.g., LAPIC, IOAPIC, default SVGA framebuffer).
*
* If igd_opregion_pgbase we need to split the RESERVED region in two.
*/
I gather this range is found non-specially by SeaBIOS [src/xen.c] in
xen_ramsize_preinit(), following the xen_seabios_info struct you
mentioned, placed at 0x00001000.
However in OVMF the RESERVED_MEMBASE range is not parsed from this
Xen-exported table, it is added manually in InitializeXen()
[OvmfPkg/PlatformPei/Xen.c]:
//
// Reserve away HVMLOADER reserved memory [0xFC000000,0xFD000000).
// This needs to match HVMLOADER RESERVED_MEMBASE/RESERVED_MEMSIZE.
//
AddReservedMemoryBaseSizeHob (0xFC000000, 0x1000000);
"MemDetect.c" in the same directory might be relevant as well
(GetSystemMemorySizeBelow4gb(), GetSystemMemorySizeAbove4gb(); they work
from the CMOS).
... I gather this is about the placement of the flash memory, yes? If a
static address could work for the flash, I think in OVMF we should
update
- MemMapInitialization() [OvmfPkg/PlatformPei/Platform.c]
- OvmfPkg/AcpiTables/Dsdt.asl
But I could be completely missing the topic here...
Thanks,
Laszlo
More information about the SeaBIOS
mailing list