# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1231422545 0
# Node ID f20e5039b168316ef717abc60d3c82a4dc9bf4f2
# Parent 1025a725d45b69be196e02b5c3478feb7df14780
hvmloader: Simplify access to hvm_info_table.
Also require the table to be present.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
tools/firmware/hvmloader/acpi/build.c | 4 ++--
tools/firmware/hvmloader/hvmloader.c | 4 ++--
tools/firmware/hvmloader/mp_tables.c | 4 ++--
tools/firmware/hvmloader/smbios.c | 2 +-
tools/firmware/hvmloader/smp.c | 2 +-
tools/firmware/hvmloader/util.c | 23 ++---------------------
tools/firmware/hvmloader/util.h | 6 +++---
7 files changed, 13 insertions(+), 32 deletions(-)
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/acpi/build.c
--- a/tools/firmware/hvmloader/acpi/build.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/acpi/build.c Thu Jan 08 13:49:05 2009 +0000
@@ -150,7 +150,7 @@ static int construct_madt(struct acpi_20
offset += sizeof(*io_apic);
lapic = (struct acpi_20_madt_lapic *)(io_apic + 1);
- for ( i = 0; i < get_vcpu_nr(); i++ )
+ for ( i = 0; i < hvm_info->nr_vcpus; i++ )
{
memset(lapic, 0, sizeof(*lapic));
lapic->type = ACPI_PROCESSOR_LOCAL_APIC;
@@ -201,7 +201,7 @@ static int construct_secondary_tables(ui
uint16_t *tis_hdr;
/* MADT. */
- if ( (get_vcpu_nr() > 1) || get_apic_mode() )
+ if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode )
{
madt = (struct acpi_20_madt *)&buf[offset];
offset += construct_madt(madt);
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/hvmloader.c Thu Jan 08 13:49:05 2009 +0000
@@ -604,7 +604,7 @@ int main(void)
apic_setup();
pci_setup();
- if ( (get_vcpu_nr() > 1) || get_apic_mode() )
+ if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode )
create_mp_tables();
switch ( virtual_vga )
@@ -640,7 +640,7 @@ int main(void)
option_rom_phys_addr = etherboot_phys_addr + etherboot_sz;
option_rom_sz = pci_load_option_roms(option_rom_phys_addr);
- if ( get_acpi_enabled() )
+ if ( hvm_info->acpi_enabled )
{
printf("Loading ACPI ...\n");
acpi_build_tables();
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/mp_tables.c
--- a/tools/firmware/hvmloader/mp_tables.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/mp_tables.c Thu Jan 08 13:49:05 2009 +0000
@@ -155,7 +155,7 @@ static void fill_mp_config_table(struct
int vcpu_nr, i;
uint8_t checksum;
- vcpu_nr = get_vcpu_nr();
+ vcpu_nr = hvm_info->nr_vcpus;
/* fill in the MP configuration table signature, "PCMP" */
mpct->signature[0] = 'P';
@@ -317,7 +317,7 @@ void create_mp_tables(void)
char *p;
int vcpu_nr, i, length;
- vcpu_nr = get_vcpu_nr();
+ vcpu_nr = hvm_info->nr_vcpus;
printf("Creating MP tables ...\n");
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/smbios.c
--- a/tools/firmware/hvmloader/smbios.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/smbios.c Thu Jan 08 13:49:05 2009 +0000
@@ -229,7 +229,7 @@ hvm_write_smbios_tables(void)
/* SCRATCH_PHYSICAL_ADDRESS is a safe large memory area for scratch. */
len = write_smbios_tables((void *)SCRATCH_PHYSICAL_ADDRESS,
- get_vcpu_nr(), get_memsize(),
+ hvm_info->nr_vcpus, get_memsize(),
uuid, xen_version_str,
xen_major_version, xen_minor_version);
if ( len > SMBIOS_MAXIMUM_SIZE )
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/smp.c
--- a/tools/firmware/hvmloader/smp.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/smp.c Thu Jan 08 13:49:05 2009 +0000
@@ -121,7 +121,7 @@ static void boot_cpu(unsigned int cpu)
void smp_initialise(void)
{
- unsigned int i, nr_cpus = get_vcpu_nr();
+ unsigned int i, nr_cpus = hvm_info->nr_vcpus;
memcpy((void *)AP_BOOT_EIP, ap_boot_start, ap_boot_end - ap_boot_start);
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/util.c
--- a/tools/firmware/hvmloader/util.c Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/util.c Thu Jan 08 13:49:05 2009 +0000
@@ -25,7 +25,6 @@
#include <stdint.h>
#include <xen/xen.h>
#include <xen/memory.h>
-#include <xen/hvm/hvm_info_table.h>
void wrmsr(uint32_t idx, uint64_t v)
{
@@ -566,7 +565,7 @@ static int validate_hvm_info(struct hvm_
return (sum == 0);
}
-static struct hvm_info_table *get_hvm_info_table(void)
+struct hvm_info_table *get_hvm_info_table(void)
{
static struct hvm_info_table *table;
struct hvm_info_table *t;
@@ -579,30 +578,12 @@ static struct hvm_info_table *get_hvm_in
if ( !validate_hvm_info(t) )
{
printf("Bad hvm info table\n");
- return NULL;
+ BUG();
}
table = t;
return table;
-}
-
-int get_vcpu_nr(void)
-{
- struct hvm_info_table *t = get_hvm_info_table();
- return (t ? t->nr_vcpus : 1);
-}
-
-int get_acpi_enabled(void)
-{
- struct hvm_info_table *t = get_hvm_info_table();
- return (t ? t->acpi_enabled : 1);
-}
-
-int get_apic_mode(void)
-{
- struct hvm_info_table *t = get_hvm_info_table();
- return (t ? t->apic_mode : 1);
}
uint16_t get_cpu_mhz(void)
diff -r 1025a725d45b -r f20e5039b168 tools/firmware/hvmloader/util.h
--- a/tools/firmware/hvmloader/util.h Thu Jan 08 13:37:16 2009 +0000
+++ b/tools/firmware/hvmloader/util.h Thu Jan 08 13:49:05 2009 +0000
@@ -3,6 +3,7 @@
#include <stdarg.h>
#include <stdint.h>
+#include <xen/hvm/hvm_info_table.h>
#undef offsetof
#define offsetof(t, m) ((unsigned long)&((t *)0)->m)
@@ -103,9 +104,8 @@ static inline void cpu_relax(void)
})
/* HVM-builder info. */
-int get_vcpu_nr(void);
-int get_acpi_enabled(void);
-int get_apic_mode(void);
+struct hvm_info_table *get_hvm_info_table(void);
+#define hvm_info (get_hvm_info_table())
/* String and memory functions */
int strcmp(const char *cs, const char *ct);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|