aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-06-01 16:45:05 +0100
committerIan Campbell <ian.campbell@citrix.com>2011-06-01 16:45:05 +0100
commit20f9f76007757354195571bac65bdc03d9df6e69 (patch)
tree6f35fbf633e54d2e3151f0568c537cda367d3ab7 /tools
parent946863b1411f62fc73620466089d35b3dc4cd2ad (diff)
downloadxen-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.h4
-rw-r--r--tools/firmware/hvmloader/hvmloader.c12
-rw-r--r--tools/firmware/hvmloader/rombios.c11
-rw-r--r--tools/firmware/hvmloader/seabios.c4
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,
};
/*