diff options
author | Ian Campbell <ian.campbell@citrix.com> | 2011-06-01 16:45:05 +0100 |
---|---|---|
committer | Ian Campbell <ian.campbell@citrix.com> | 2011-06-01 16:45:05 +0100 |
commit | 20f9f76007757354195571bac65bdc03d9df6e69 (patch) | |
tree | 6f35fbf633e54d2e3151f0568c537cda367d3ab7 /tools | |
parent | 946863b1411f62fc73620466089d35b3dc4cd2ad (diff) | |
download | xen-20f9f76007757354195571bac65bdc03d9df6e69.tar.gz xen-20f9f76007757354195571bac65bdc03d9df6e69.tar.bz2 xen-20f9f76007757354195571bac65bdc03d9df6e69.zip |
hvmloader: make SMBIOS initialisation more general.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/firmware/hvmloader/config.h | 4 | ||||
-rw-r--r-- | tools/firmware/hvmloader/hvmloader.c | 12 | ||||
-rw-r--r-- | tools/firmware/hvmloader/rombios.c | 11 | ||||
-rw-r--r-- | tools/firmware/hvmloader/seabios.c | 4 |
4 files changed, 13 insertions, 18 deletions
diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h index 58f558309a..bc6d445fa1 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -16,9 +16,6 @@ struct bios_config { /* Physical address to load at */ unsigned int bios_address; - /* SMBIOS */ - unsigned int smbios_start, smbios_end; - /* ROMS */ int load_roms; unsigned int optionrom_start, optionrom_end; @@ -31,6 +28,7 @@ struct bios_config { void (*acpi_build_tables)(void); void (*create_mp_tables)(void); + void (*create_smbios_tables)(void); }; extern struct bios_config rombios_config; diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index d719c9962c..1ba1f37c7f 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -383,7 +383,7 @@ 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; + int option_rom_sz = 0, vgabios_sz = 0, etherboot_sz = 0; uint32_t etherboot_phys_addr = 0, option_rom_phys_addr = 0; /* Initialise hypercall stubs with RET, rendering them no-ops. */ @@ -407,11 +407,9 @@ int main(void) perform_tests(); - if (bios->smbios_start) { + if (bios->create_smbios_tables) { printf("Writing SMBIOS tables ...\n"); - smbios_sz = hvm_write_smbios_tables(SCRATCH_PHYSICAL_ADDRESS, - bios->smbios_start, - bios->smbios_end); + bios->create_smbios_tables(); } printf("Loading %s ...\n", bios->name); @@ -495,10 +493,6 @@ int main(void) printf(" %05x-%05x: PCI Option ROMs\n", option_rom_phys_addr, option_rom_phys_addr + option_rom_sz - 1); - if ( smbios_sz ) - printf(" %05x-%05x: SMBIOS tables\n", - bios->smbios_start, - bios->smbios_start + smbios_sz - 1); printf(" %05x-%05x: Main BIOS\n", bios->bios_address, bios->bios_address + bios->image_size - 1); diff --git a/tools/firmware/hvmloader/rombios.c b/tools/firmware/hvmloader/rombios.c index c31ea37762..376e4136b0 100644 --- a/tools/firmware/hvmloader/rombios.c +++ b/tools/firmware/hvmloader/rombios.c @@ -136,6 +136,13 @@ static void rombios_create_mp_tables(void) reset_bios_checksum(); } +static void rombios_create_smbios_tables(void) +{ + hvm_write_smbios_tables(SCRATCH_PHYSICAL_ADDRESS, + SMBIOS_PHYSICAL_ADDRESS, + SMBIOS_PHYSICAL_END); +} + //BUILD_BUG_ON(sizeof(rombios) > (0x00100000U - ROMBIOS_PHYSICAL_ADDRESS)); struct bios_config rombios_config = { @@ -146,9 +153,6 @@ struct bios_config rombios_config = { .bios_address = ROMBIOS_PHYSICAL_ADDRESS, - .smbios_start = SMBIOS_PHYSICAL_ADDRESS, - .smbios_end = SMBIOS_PHYSICAL_END, - .load_roms = 1, .optionrom_start = OPTIONROM_PHYSICAL_ADDRESS, @@ -162,6 +166,7 @@ struct bios_config rombios_config = { .acpi_build_tables = rombios_acpi_build_tables, .create_mp_tables = rombios_create_mp_tables, + .create_smbios_tables = rombios_create_smbios_tables, }; /* diff --git a/tools/firmware/hvmloader/seabios.c b/tools/firmware/hvmloader/seabios.c index 02a6dce5f8..53cc01ed63 100644 --- a/tools/firmware/hvmloader/seabios.c +++ b/tools/firmware/hvmloader/seabios.c @@ -38,9 +38,6 @@ struct bios_config seabios_config = { .bios_address = SEABIOS_PHYSICAL_ADDRESS, - .smbios_start = 0, - .smbios_end = 0, - .load_roms = 0, .optionrom_start = 0, @@ -53,6 +50,7 @@ struct bios_config seabios_config = { .acpi_build_tables = NULL, .create_mp_tables = NULL, + .create_smbios_tables = NULL, }; /* |