From: Michael S. Tsirkin Date: Mon, 28 Apr 2014 05:15:32 +0000 (+0300) Subject: acpi: fix tables for no-hpet configuration X-Git-Tag: qemu-xen-4.5.0-rc1^2~89 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=2f18e44b0c9dbe0ad47d082b4482e0b4f0f0b08c;p=qemu-upstream-4.5-testing.git acpi: fix tables for no-hpet configuration acpi build tried to add offset of hpet table to rsdt even when hpet was disabled. If no tables follow hpet, this could lead to a malformed rsdt. Fix it up. To avoid such errors in the future, rearrange code slightly to make it clear that acpi_add_table stores the offset of the following table - not of the previous one. Reported-by: TeLeMan Signed-off-by: Michael S. Tsirkin Cc: qemu-stable@nongnu.org (cherry picked from commit 9ac1c4c07e7e6ab16a3e2149e9b32c0d092cb3f5) Signed-off-by: Michael Roth --- diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index c98df88cd..985a188fe 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -1410,15 +1410,16 @@ void acpi_build(PcGuestInfo *guest_info, AcpiBuildTables *tables) /* ACPI tables pointed to by RSDT */ acpi_add_table(table_offsets, tables->table_data); build_fadt(tables->table_data, tables->linker, &pm, facs, dsdt); - acpi_add_table(table_offsets, tables->table_data); + acpi_add_table(table_offsets, tables->table_data); build_ssdt(tables->table_data, tables->linker, &cpu, &pm, &misc, &pci, guest_info); - acpi_add_table(table_offsets, tables->table_data); - build_madt(tables->table_data, tables->linker, &cpu, guest_info); acpi_add_table(table_offsets, tables->table_data); + build_madt(tables->table_data, tables->linker, &cpu, guest_info); + if (misc.has_hpet) { + acpi_add_table(table_offsets, tables->table_data); build_hpet(tables->table_data, tables->linker); } if (guest_info->numa_nodes) {