[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] tools: hvmloader: pass SMBIOS location as a runtime parameter.
# HG changeset patch # User Ian Campbell <ian.campbell@xxxxxxxxxx> # Date 1302611881 -3600 # Node ID b5180edfccda1df7d721ad4e5cae40034a01ec98 # Parent 060f5397097bb83c35678190e569ca0d3689b82e tools: hvmloader: pass SMBIOS location as a runtime parameter. Instead of hardcoding in a header. Reduces the cross talk between ROMBIOS and hvmloader. Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Acked-by: Keir Fraser <keir@xxxxxxx> --- diff -r 060f5397097b -r b5180edfccda tools/firmware/hvmloader/hvmloader.c --- a/tools/firmware/hvmloader/hvmloader.c Tue Apr 12 13:37:03 2011 +0100 +++ b/tools/firmware/hvmloader/hvmloader.c Tue Apr 12 13:38:01 2011 +0100 @@ -599,7 +599,9 @@ perform_tests(); printf("Writing SMBIOS tables ...\n"); - smbios_sz = hvm_write_smbios_tables(); + smbios_sz = hvm_write_smbios_tables(SCRATCH_PHYSICAL_ADDRESS, + SMBIOS_PHYSICAL_ADDRESS, + SMBIOS_PHYSICAL_END); printf("Loading ROMBIOS ...\n"); rombios_sz = sizeof(rombios); diff -r 060f5397097b -r b5180edfccda tools/firmware/hvmloader/smbios.c --- a/tools/firmware/hvmloader/smbios.c Tue Apr 12 13:37:03 2011 +0100 +++ b/tools/firmware/hvmloader/smbios.c Tue Apr 12 13:38:01 2011 +0100 @@ -28,7 +28,7 @@ #include "hypercall.h" static int -write_smbios_tables(void *start, +write_smbios_tables(void *start, unsigned long phys, uint32_t vcpus, uint64_t memsize, uint8_t uuid[16], char *xen_version, uint32_t xen_major_version, uint32_t xen_minor_version); @@ -85,7 +85,7 @@ } static int -write_smbios_tables(void *start, +write_smbios_tables(void *start, unsigned long phys, uint32_t vcpus, uint64_t memsize, uint8_t uuid[16], char *xen_version, uint32_t xen_major_version, uint32_t xen_minor_version) @@ -136,7 +136,7 @@ smbios_entry_point_init( start, max_struct_size, (p - (char *)start) - sizeof(struct smbios_entry_point), - SMBIOS_PHYSICAL_ADDRESS + sizeof(struct smbios_entry_point), + phys + sizeof(struct smbios_entry_point), nr_structs); return ((char *)p - (char *)start); @@ -162,7 +162,7 @@ } int -hvm_write_smbios_tables(void) +hvm_write_smbios_tables(unsigned long scratch, unsigned long smbios_start, unsigned long smbios_end) { xen_domain_handle_t uuid; uint16_t xen_major_version, xen_minor_version; @@ -222,15 +222,14 @@ xen_version_str[sizeof(xen_version_str)-1] = '\0'; /* SCRATCH_PHYSICAL_ADDRESS is a safe large memory area for scratch. */ - len = write_smbios_tables((void *)SCRATCH_PHYSICAL_ADDRESS, + len = write_smbios_tables((void *)scratch, smbios_start, hvm_info->nr_vcpus, get_memsize(), uuid, xen_version_str, xen_major_version, xen_minor_version); - if ( len > SMBIOS_MAXIMUM_SIZE ) + if ( smbios_start + len > smbios_end ) goto error_out; /* Okay, not too large: copy out of scratch to final location. */ - memcpy((void *)SMBIOS_PHYSICAL_ADDRESS, - (void *)SCRATCH_PHYSICAL_ADDRESS, len); + memcpy((void *)smbios_start, (void *)scratch, len); return len; diff -r 060f5397097b -r b5180edfccda tools/firmware/hvmloader/util.h --- a/tools/firmware/hvmloader/util.h Tue Apr 12 13:37:03 2011 +0100 +++ b/tools/firmware/hvmloader/util.h Tue Apr 12 13:38:01 2011 +0100 @@ -186,7 +186,9 @@ /* Miscellaneous. */ void cacheattr_init(void); void create_mp_tables(void); -int hvm_write_smbios_tables(void); +int hvm_write_smbios_tables(unsigned long scratch, + unsigned long smbios_start, + unsigned long smbios_end); void smp_initialise(void); #include "e820.h" diff -r 060f5397097b -r b5180edfccda tools/firmware/rombios/config.h --- a/tools/firmware/rombios/config.h Tue Apr 12 13:37:03 2011 +0100 +++ b/tools/firmware/rombios/config.h Tue Apr 12 13:38:01 2011 +0100 @@ -11,7 +11,8 @@ #define ACPI_PHYSICAL_ADDRESS 0x000EA020 #define E820_PHYSICAL_ADDRESS 0x000EA100 #define SMBIOS_PHYSICAL_ADDRESS 0x000EB000 -#define SMBIOS_MAXIMUM_SIZE 0x00005000 +#define SMBIOS_PHYSICAL_END 0x000F0000 + #define ROMBIOS_PHYSICAL_ADDRESS 0x000F0000 /* Offsets from E820_PHYSICAL_ADDRESS. */ _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |