pc: acpi: generate AML only for PCI0 devices if PCI bridge hotplug is disabled
commit133a2da488062eb47e576e12ee15314349272068
authorIgor Mammedov <imammedo@redhat.com>
Mon, 28 Jul 2014 15:34:18 +0000 (28 17:34 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 29 Jul 2014 10:26:12 +0000 (29 12:26 +0200)
treef3f5d7d8bd451d955609aa69acbec28161c56484
parentcb348985abd3673b40c8af069c3e3b84f547b6f7
pc: acpi: generate AML only for PCI0 devices if PCI bridge hotplug is disabled

Fixes migration regression from QEMU-1.7 to a newer QEMUs.
SSDT table size in QEMU-1.7 doesn't change regardless of
a number of PCI bridge devices present at startup.

However in QEMU-2.0 since addition of hotplug on PCI bridges,
each PCI bridge adds ~1875 bytes to SSDT table, including
pc-i440fx-1.7 machine type where PCI bridge hotplug disabled
via compat property.
It breaks migration from "QEMU-1.7" to "QEMU-2.[01] -M pc-i440fx-1.7"
since RAMBlock size of ACPI tables on target becomes larger
then on source and migration fails with:

"Length mismatch: /rom@etc/acpi/tables: 2000 in != 3000"

error.

Fix this by generating AML only for PCI0 bus if
hotplug on PCI bridges is disabled and preserves PCI brigde
description in AML as it was done in QEMU-1.7 for pc-i440fx-1.7.

It will help to maintain size of SSDT static regardless of
number of PCI bridges on startup for pc-i440fx-1.7 machine type.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/i386/acpi-build.c