[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 5/5] hvmloader: Use iPXE ROM loaded from a standalone file
splatering of mkhex-ed etherboot inside hvmloader/rombios is removed, instead hvmloader/rombios now relies on iPXE ROM to be added,loaded as a module. Signed-off-by: Anoob Soman <anoob.soman@xxxxxxxxxx> --- tools/firmware/hvmloader/Makefile | 7 +------ tools/firmware/hvmloader/config.h | 5 +++++ tools/firmware/hvmloader/hvmloader.c | 9 ++++++++- tools/firmware/hvmloader/rombios.c | 13 +++++++++---- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile index fa1bf30..f347cb4 100644 --- a/tools/firmware/hvmloader/Makefile +++ b/tools/firmware/hvmloader/Makefile @@ -64,7 +64,7 @@ ifeq ($(CONFIG_ROMBIOS),y) OBJS += optionroms.o 32bitbios_support.o rombios.o CFLAGS += -DENABLE_ROMBIOS ROMBIOS_ROM := $(ROMBIOS_DIR)/BIOS-bochs-latest -ROMS += $(ROMBIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) $(ETHERBOOT_ROMS) +ROMS += $(ROMBIOS_ROM) $(STDVGA_ROM) $(CIRRUSVGA_ROM) endif .PHONY: all @@ -109,11 +109,6 @@ ifneq ($(CIRRUSVGA_ROM),) sh ../../misc/mkhex vgabios_cirrusvga $(CIRRUSVGA_ROM) >> $@.new echo "#endif" >> $@.new endif -ifneq ($(ETHERBOOT_ROMS),) - echo "#ifdef ROM_INCLUDE_ETHERBOOT" >> $@.new - sh ../../misc/mkhex etherboot $(ETHERBOOT_ROMS) >> $@.new - echo "#endif" >> $@.new -endif mv $@.new $@ diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h index 6e00413..8f5d1040 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -33,6 +33,11 @@ struct bios_config { void (*create_mp_tables)(void); void (*create_smbios_tables)(void); void (*create_pir_tables)(void); + + /* Physical address of iPXE ROM, loaded by domain builder + * when using ROMBIOS + */ + unsigned int *ipxe_rom_addresss; }; extern struct bios_config rombios_config; diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index f603f68..731cd81 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -323,6 +323,8 @@ int main(void) const struct bios_config *bios; int acpi_enabled; const struct hvm_modlist_entry *bios_module; + const struct hvm_modlist_entry *ipxe_module = NULL; + unsigned int ipxe_rom_addresss = 0; /* Initialise hypercall stubs with RET, rendering them no-ops. */ memset((void *)HYPERCALL_PHYSICAL_ADDRESS, 0xc3 /* RET */, PAGE_SIZE); @@ -368,7 +370,12 @@ int main(void) #ifdef ENABLE_ROMBIOS else if ( bios == &rombios_config ) { - bios->bios_load(bios, NULL, 0); + ipxe_module = get_module_entry(hvm_start_info, "ipxe"); + + if ( ipxe_module ) + ipxe_rom_addresss = ipxe_module->paddr; + + bios->bios_load(bios, (void *)ipxe_rom_addresss, 0); } #endif else diff --git a/tools/firmware/hvmloader/rombios.c b/tools/firmware/hvmloader/rombios.c index c736fd9..c0e04cb 100644 --- a/tools/firmware/hvmloader/rombios.c +++ b/tools/firmware/hvmloader/rombios.c @@ -95,9 +95,12 @@ static void rombios_load_roms(void) etherboot_phys_addr = VGABIOS_PHYSICAL_ADDRESS + vgabios_sz; if ( etherboot_phys_addr < OPTIONROM_PHYSICAL_ADDRESS ) etherboot_phys_addr = OPTIONROM_PHYSICAL_ADDRESS; - etherboot_sz = scan_etherboot_nic(OPTIONROM_PHYSICAL_END, - etherboot_phys_addr, - etherboot); + + if ( rombios_config.ipxe_rom_addresss ) + etherboot_sz = scan_etherboot_nic(OPTIONROM_PHYSICAL_END, + etherboot_phys_addr, + rombios_config.ipxe_rom_addresss); + option_rom_phys_addr = etherboot_phys_addr + etherboot_sz; option_rom_sz = pci_load_option_roms(OPTIONROM_PHYSICAL_END, @@ -119,7 +122,7 @@ static void rombios_load_roms(void) } static void rombios_load(const struct bios_config *config, - void *unused_addr, uint32_t unused_size) + void *ipxe_rom_addr, uint32_t unused_size) { uint32_t bioshigh; struct rombios_info *info; @@ -133,6 +136,8 @@ static void rombios_load(const struct bios_config *config, info = (struct rombios_info *)BIOS_INFO_PHYSICAL_ADDRESS; info->bios32_entry = bioshigh; + + rombios_config.ipxe_rom_addresss = ipxe_rom_addr; } /* -- 1.8.3.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |