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 <geleman@gmail.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Cc: qemu-stable@nongnu.org
This commit is contained in:
parent
097a97a665
commit
9ac1c4c07e
@ -1416,15 +1416,16 @@ void acpi_build(PcGuestInfo *guest_info, AcpiBuildTables *tables)
|
|||||||
/* ACPI tables pointed to by RSDT */
|
/* ACPI tables pointed to by RSDT */
|
||||||
acpi_add_table(table_offsets, tables->table_data);
|
acpi_add_table(table_offsets, tables->table_data);
|
||||||
build_fadt(tables->table_data, tables->linker, &pm, facs, dsdt);
|
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,
|
build_ssdt(tables->table_data, tables->linker, &cpu, &pm, &misc, &pci,
|
||||||
guest_info);
|
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);
|
acpi_add_table(table_offsets, tables->table_data);
|
||||||
|
build_madt(tables->table_data, tables->linker, &cpu, guest_info);
|
||||||
|
|
||||||
if (misc.has_hpet) {
|
if (misc.has_hpet) {
|
||||||
|
acpi_add_table(table_offsets, tables->table_data);
|
||||||
build_hpet(tables->table_data, tables->linker);
|
build_hpet(tables->table_data, tables->linker);
|
||||||
}
|
}
|
||||||
if (guest_info->numa_nodes) {
|
if (guest_info->numa_nodes) {
|
||||||
|
Loading…
Reference in New Issue
Block a user