inject created SRAT table into the guest
PATCH 4/4 inject created SRAT table into the guest
Signed-off-by Andre Przywara <[email protected]>
# HG changeset patch
# User [email protected]
# Date 1186568085 -7200
# Node ID 1f3def9d51b4aacdb87862166998c29622649dcc # Parent f5e9f20109d9dc3c82bfadcedd4af77a35e8c5fb export SRAT table to the guest
tools/firmware/hvmloader/acpi/acpi2_0.h +57 -0
@@ -369,6 +369,61 @@ struct acpi_20_madt_intsrcovr { };/* +* System Resource Affinity Table header definition (SRAT). +*/ +struct acpi_20_srat { +struct acpi_header header; +uint32_t table_revision; +uint32_t reserved2[2 ]; +}; + +#define ACPI_SRAT_TABLE_REVISION 1 + +/* +* System Resource Affinity Table structure types. +*/ +#define ACPI_PROCESSOR_AFFIN 0x00 +#define ACPI_MEMORY_AFFIN 0x01 + +struct acpi_20_srat_processor { +uint8_t type; +uint8_t length; +uint8_t domain; +uint8_t apic_id; +uint32_t flags; +uint8_t sapic_id; +uint8_t domain_hi[3 ]; +uint32_t reserved; +}; + +/* +* Local APIC Affinity Flags. All other bits are reserved and must be 0. +*/ +#define ACPI_LOCAL_APIC_AFFIN_ENABLED (1 << 0) + +struct acpi_20_srat_memory { +uint8_t type; +uint8_t length; +uint8_t domain; +uint8_t domain_hi[3 ];/* this is ACPI 3.0, reserved in 2.0 */ +uint16_t reserved; +uint32_t base_address_lo; +uint32_t base_address_hi; +uint32_t length_lo; +uint32_t length_hi; +uint32_t reserved2; +uint32_t flags; +uint32_t reserved3[2 ]; +}; + +/* +* Memory Affinity Flags. All other bits are reserved and must be 0. +*/ +#define ACPI_MEM_AFFIN_ENABLED (1 << 0) +#define ACPI_MEM_AFFIN_HOTPLUGGABLE (1 << 1) +#define ACPI_MEM_AFFIN_NONVOLATILE (1 << 2)/* this is ACPI 3.0 */ + +/* * Table Signatures. */ #define ACPI_2_0_RSDP_SIGNATURE ASCII64('R','S','D',' ','P','T','R',' ')
@@ -379,6 +434,7 @@ struct acpi_20_madt_intsrcovr {#define ACPI_2_0_XSDT_SIGNATURE ASCII32('X','S','D','T')#define ACPI_2_0_TCPA_SIGNATURE ASCII32('T','C','P','A')#define ACPI_2_0_HPET_SIGNATURE ASCII32('H','P','E','T') +#define ACPI_2_0_SRAT_SIGNATURE ASCII32('S','R','A','T')/* * Table revision numbers.
@@ -391,6 +447,7 @@ struct acpi_20_madt_intsrcovr {#define ACPI_2_0_TCPA_REVISION 0x02#define ACPI_2_0_HPET_REVISION 0x01#define ACPI_1_0_FADT_REVISION 0x01 +#define ACPI_2_0_SRAT_REVISION 0x01#pragma pack ()
tools/firmware/hvmloader/acpi/build.c +142 -1
173 lines not on this page · raw message
tools/firmware/hvmloader/util.c +6 -0
@@ -574,6 +574,12 @@ int get_vcpu_nr(void)return (t ? t->nr_vcpus :1 ); } +int get_numanodes (void ) +{ +struct hvm_info_table *t =get_hvm_info_table (); +return (t ? t->numanodes :1 ); +} +int get_acpi_enabled (void ) {struct hvm_info_table *t =get_hvm_info_table ();
tools/firmware/hvmloader/util.h +1 -0
@@ -54,6 +54,7 @@ void cpuid(uint32_t idx, uint32_t *eax,/* HVM-builder info. */ int get_vcpu_nr (void ); +int get_numanodes (void );int get_acpi_enabled (void );int get_apic_mode (void );
_______________________________________________
Xen-devel mailing list
[email protected]
http://lists.xensource.com/xen-devel