aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2013-10-03 14:00:27 +0300
committerMichael S. Tsirkin <mst@redhat.com>2013-10-03 16:25:30 +0300
commit50957e6e2ccda8c91a006b22075f1aab7f5c6251 (patch)
tree062237eb2662cc2cd2eff7aa10ce465109cd4390
parent77719030a5f380b8a25a19f31be94d27c34bca8f (diff)
downloadseabios-acpi.tar.gz
acpi: strip compiler info in built-in DSDT if anyacpi-untestedacpi
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@redhat.com>
-rw-r--r--src/fw/acpi.c5
1 files changed, 4 insertions, 1 deletions
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