diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index ce9cc93af4f79cca7f80dc6466924903871fad6a..c02f408ab2fb995216dd59a5acfe3ff5f6bb6ff3 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -2960,7 +2960,7 @@ void acpi_setup(void) return; } - if (!pcmc->has_acpi_build) { + if (!pcms->acpi_build_enabled) { ACPI_BUILD_DPRINTF("ACPI build disabled. Bailing out.\n"); return; } diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c011552ac42c40742cc6357bbb25028d49e826ad..2c37a78c7ad5d1e436eb32cffa8facfd5fc5b451 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -2189,6 +2189,8 @@ static void pc_machine_initfn(Object *obj) pcms->vmport = ON_OFF_AUTO_AUTO; /* nvdimm is disabled on default. */ pcms->acpi_nvdimm_state.is_enabled = false; + /* acpi build is enabled by default if machine supports it */ + pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build; } static void pc_machine_reset(void) diff --git a/hw/xen/xen_pvdev.c b/hw/xen/xen_pvdev.c index 405e15484c7a7d13e399f4fbd6473ed39a463ce1..5212bc6d9e02eab9f27769de6901c7017fe34f32 100644 --- a/hw/xen/xen_pvdev.c +++ b/hw/xen/xen_pvdev.c @@ -18,7 +18,7 @@ */ #include "qemu/osdep.h" - +#include "qemu/log.h" #include "hw/xen/xen_backend.h" #include "hw/xen/xen_pvdev.h" diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 98dc7722c398dd217db6a649801ba153b576e332..8eb517f914cabdc1761ee5d1533e98c638888096 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -62,6 +62,8 @@ struct PCMachineState { AcpiNVDIMMState acpi_nvdimm_state; + bool acpi_build_enabled; + /* RAM information (sizes, addresses, configuration): */ ram_addr_t below_4g_mem_size, above_4g_mem_size; diff --git a/xen-common.c b/xen-common.c index 909976071c243c1f1cd1b7d08cb05cc511c5e89c..bacf962841a54059bbebffcfca1f2a7fc56dad4d 100644 --- a/xen-common.c +++ b/xen-common.c @@ -9,6 +9,7 @@ */ #include "qemu/osdep.h" +#include "hw/i386/pc.h" #include "hw/xen/xen_backend.h" #include "qmp-commands.h" #include "sysemu/char.h" @@ -114,6 +115,11 @@ static void xen_change_state_handler(void *opaque, int running, static int xen_init(MachineState *ms) { + PCMachineState *pcms = PC_MACHINE(ms); + + /* Disable ACPI build because Xen handles it */ + pcms->acpi_build_enabled = false; + xen_xc = xc_interface_open(0, 0, 0); if (xen_xc == NULL) { xen_pv_printf(NULL, 0, "can't open xen interface\n");