Xen's toolstack is in charge of building ACPI tables. Skip acpi table
building if running on Xen.

This issue is discovered due to direct kernel boot on Xen doesn't boot
anymore, because the new ACPI tables cause the guest to exceed its
memory allocation limit.

Reported-by: Sander Eikelenboom <[email protected]>
Signed-off-by: Wei Liu <[email protected]>
---
Cc: Anthony PERARD <[email protected]>
Cc: Stefano Stabellini <[email protected]>

RFC because I'm not sure this is the best way to fix it.
---
 hw/i386/acpi-build.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index a26a4bb..2cdff12 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -45,6 +45,7 @@
 #include "sysemu/tpm_backend.h"
 #include "hw/timer/mc146818rtc_regs.h"
 #include "sysemu/numa.h"
+#include "hw/xen/xen.h"
 
 /* Supported chipsets: */
 #include "hw/acpi/piix4.h"
@@ -2865,6 +2866,11 @@ void acpi_setup(void)
         return;
     }
 
+    if (xen_enabled()) {
+        ACPI_BUILD_DPRINTF("Xen enabled. Bailing out.\n");
+        return;
+    }
+
     build_state = g_malloc0(sizeof *build_state);
 
     acpi_set_pci_info();
-- 
2.1.4


Reply via email to