diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-11-24 11:17:44 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-11-24 11:17:44 +0000 |
commit | 66d936fdab1e4da0c2ef6e32e24362a26d1a343a (patch) | |
tree | dc35300811df45d4cb25a70a21c8b7eb6d656b1d /tools/firmware/hvmloader/hvmloader.c | |
parent | 6d72e644df8cf5c0bee438c2ea746538a3b06247 (diff) | |
download | xen-66d936fdab1e4da0c2ef6e32e24362a26d1a343a.tar.gz xen-66d936fdab1e4da0c2ef6e32e24362a26d1a343a.tar.bz2 xen-66d936fdab1e4da0c2ef6e32e24362a26d1a343a.zip |
hvmloader: Relocate the etherboot ROM to be near the end of VGA
BIOS. Current Xen hard coded VGA ROM at 0xC0000 and etherboot ROM
at 0xD0000. This makes the space in [0xC0000 - 0xDFFFF] to be
fragments, which makes it hard to find enough space to hold another
Option ROM.
Signed-off-by: Shan Haitao <haitao.shan@intel.com>
Diffstat (limited to 'tools/firmware/hvmloader/hvmloader.c')
-rw-r--r-- | tools/firmware/hvmloader/hvmloader.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index 9dff7cc08d..c8c2719a6c 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -462,7 +462,7 @@ static uint16_t init_xen_platform_io_base(void) int main(void) { int vgabios_sz = 0, etherboot_sz = 0, rombios_sz, smbios_sz; - uint32_t vga_ram = 0; + uint32_t etherboot_phys_addr, vga_ram = 0; uint16_t xen_pfiob; printf("HVM Loader\n"); @@ -516,7 +516,10 @@ int main(void) printf("VGA RAM at %08x\n", vga_ram); } - etherboot_sz = scan_etherboot_nic((void*)ETHERBOOT_PHYSICAL_ADDRESS); + /* Ethernet ROM is placed after VGA ROM, on next 2kB boundary. */ + etherboot_phys_addr = + (VGABIOS_PHYSICAL_ADDRESS + vgabios_sz + 2047) & ~2047; + etherboot_sz = scan_etherboot_nic((void *)etherboot_phys_addr); if ( get_acpi_enabled() ) { @@ -533,8 +536,8 @@ int main(void) VGABIOS_PHYSICAL_ADDRESS + vgabios_sz - 1); if ( etherboot_sz ) printf(" %05x-%05x: Etherboot ROM\n", - ETHERBOOT_PHYSICAL_ADDRESS, - ETHERBOOT_PHYSICAL_ADDRESS + etherboot_sz - 1); + etherboot_phys_addr, + etherboot_phys_addr + etherboot_sz - 1); if ( smbios_sz ) printf(" %05x-%05x: SMBIOS tables\n", SMBIOS_PHYSICAL_ADDRESS, |