[SeaBIOS] [PATCH] acpi: strip compiler info in built-in DSDT if any

Michael S. Tsirkin mst at redhat.com
Thu Oct 3 15:06:24 CEST 2013


IASL stores it's revision in each table header it generates.
That's a problem since guests see a change each time
they move between hypervisors.
We generally fill our own info for tables,
but we forgot to do this for the built-in DSDT.

Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
---
 src/fw/acpi.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/fw/acpi.c b/src/fw/acpi.c
index c29425c..0e3e3ad 100644
--- a/src/fw/acpi.c
+++ b/src/fw/acpi.c
@@ -689,13 +689,16 @@ acpi_setup(void)
 
     if (CONFIG_ACPI_DSDT && fadt && !fadt->dsdt) {
         /* default DSDT */
-        void *dsdt = malloc_high(sizeof(AmlCode));
+        struct acpi_table_header *dsdt = malloc_high(sizeof(AmlCode));
         if (!dsdt) {
             warn_noalloc();
             return;
         }
         memcpy(dsdt, AmlCode, sizeof(AmlCode));
         fill_dsdt(fadt, dsdt);
+        /* Strip out compiler-generated header if any */
+        memset(dsdt, 0, sizeof *dsdt);
+        build_header(dsdt, DSDT_SIGNATURE, sizeof(AmlCode), 1);
     }
 
     // Build final rsdt table
-- 
MST



More information about the SeaBIOS mailing list