[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] tools: hvmloader: refactor highbios and bios_info setup into struct bios_config
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1302612359 -3600 # Node ID 8fc9d810fd1651e3582b8cd3eb70fc563c29d36f # Parent aedd22b43b9d71a530a2ef2a8b049c86e324fb87 tools: hvmloader: refactor highbios and bios_info setup into struct bios_config Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Keir Fraser <keir@xxxxxxx> --- diff -r aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/32bitbios_support.c --- a/tools/firmware/hvmloader/32bitbios_support.c Tue Apr 12 13:45:31 2011 +0100 +++ b/tools/firmware/hvmloader/32bitbios_support.c Tue Apr 12 13:45:59 2011 +0100 @@ -144,7 +144,7 @@ return (uint32_t)highbiosarea; } -uint32_t highbios_setup(void) +uint32_t rombios_highbios_setup(void) { return relocate_32bitbios((char *)highbios_array, sizeof(highbios_array)); } diff -r aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/config.h --- a/tools/firmware/hvmloader/config.h Tue Apr 12 13:45:31 2011 +0100 +++ b/tools/firmware/hvmloader/config.h Tue Apr 12 13:45:59 2011 +0100 @@ -28,6 +28,9 @@ void (*apic_setup)(void); void (*pci_setup)(void); void (*smp_setup)(void); + + uint32_t (*bios_high_setup)(void); + void (*bios_info_setup)(uint32_t); }; extern struct bios_config rombios_config; diff -r aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/hvmloader.c --- a/tools/firmware/hvmloader/hvmloader.c Tue Apr 12 13:45:31 2011 +0100 +++ b/tools/firmware/hvmloader/hvmloader.c Tue Apr 12 13:45:59 2011 +0100 @@ -364,10 +364,10 @@ int main(void) { + uint32_t highbios = 0; const struct bios_config *bios; int option_rom_sz = 0, vgabios_sz = 0, etherboot_sz = 0, smbios_sz = 0; - uint32_t etherboot_phys_addr, option_rom_phys_addr, bios32_addr; - struct bios_info *bios_info; + uint32_t etherboot_phys_addr, option_rom_phys_addr; printf("HVM Loader\n"); @@ -400,7 +400,9 @@ printf("Loading %s ...\n", bios->name); memcpy((void *)bios->bios_address, bios->image, bios->image_size); - bios32_addr = highbios_setup(); + + if (bios->bios_high_setup) + highbios = bios->bios_high_setup(); if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode ) create_mp_tables(); @@ -480,17 +482,8 @@ *E820_NR = build_e820_table(E820); dump_e820_table(E820, *E820_NR); - bios_info = (struct bios_info *)BIOS_INFO_PHYSICAL_ADDRESS; - memset(bios_info, 0, sizeof(*bios_info)); - bios_info->com1_present = uart_exists(0x3f8); - bios_info->com2_present = uart_exists(0x2f8); - bios_info->lpt1_present = lpt_exists(0x378); - bios_info->hpet_present = hpet_exists(ACPI_HPET_ADDRESS); - bios_info->pci_min = pci_mem_start; - bios_info->pci_len = pci_mem_end - pci_mem_start; - bios_info->madt_csum_addr = madt_csum_addr; - bios_info->madt_lapic0_addr = madt_lapic0_addr; - bios_info->bios32_entry = bios32_addr; + if (bios->bios_info_setup) + bios->bios_info_setup(highbios); xenbus_shutdown(); diff -r aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/rombios.c --- a/tools/firmware/hvmloader/rombios.c Tue Apr 12 13:45:31 2011 +0100 +++ b/tools/firmware/hvmloader/rombios.c Tue Apr 12 13:45:59 2011 +0100 @@ -24,6 +24,7 @@ #include "../rombios/config.h" +#include "acpi/acpi2_0.h" #include "apic_regs.h" #include "pci_regs.h" #include "util.h" @@ -35,6 +36,23 @@ #define ROM_INCLUDE_ROMBIOS #include "roms.inc" +static void rombios_setup_bios_info(uint32_t bioshigh) +{ + struct bios_info *bios_info; + + bios_info = (struct bios_info *)BIOS_INFO_PHYSICAL_ADDRESS; + memset(bios_info, 0, sizeof(*bios_info)); + bios_info->com1_present = uart_exists(0x3f8); + bios_info->com2_present = uart_exists(0x2f8); + bios_info->lpt1_present = lpt_exists(0x378); + bios_info->hpet_present = hpet_exists(ACPI_HPET_ADDRESS); + bios_info->pci_min = pci_mem_start; + bios_info->pci_len = pci_mem_end - pci_mem_start; + bios_info->madt_csum_addr = madt_csum_addr; + bios_info->madt_lapic0_addr = madt_lapic0_addr; + bios_info->bios32_entry = bioshigh; +} + static void rombios_apic_setup(void) { /* Set the IOAPIC ID to the static value used in the MP/ACPI tables. */ @@ -280,6 +298,9 @@ .apic_setup = rombios_apic_setup, .pci_setup = rombios_pci_setup, .smp_setup = smp_initialise, + + .bios_high_setup = rombios_highbios_setup, + .bios_info_setup = rombios_setup_bios_info, }; /* diff -r aedd22b43b9d -r 8fc9d810fd16 tools/firmware/hvmloader/util.h --- a/tools/firmware/hvmloader/util.h Tue Apr 12 13:45:31 2011 +0100 +++ b/tools/firmware/hvmloader/util.h Tue Apr 12 13:45:59 2011 +0100 @@ -181,7 +181,7 @@ char *xenstore_read(char *path); /* Prepare the 32bit BIOS */ -uint32_t highbios_setup(void); +uint32_t rombios_highbios_setup(void); /* Miscellaneous. */ void cacheattr_init(void); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |