All existing code using acpi_get_i386_pci_host() checks for a non-null return value from this function call. Instead of returning early when the value returned is NULL, assert instead. Since there are only two possible host buses for i386 - q35 and i440fx, a null value return from the function does not make sense in most cases and is likely an error situation.
Fixes: c0e427d6eb5fef ("hw/acpi/ich9: Enable ACPI PCI hot-plug") Signed-off-by: Ani Sinha <a...@anisinha.ca> --- hw/acpi/pcihp.c | 8 ++++++++ hw/i386/acpi-build.c | 15 ++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) changelog: v1: initial patch v2: removed comment addition - that can be sent as a separate patch. v3: added assertion for null host values for all cases except one. diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c index f4d706e47d..054ee8cbc5 100644 --- a/hw/acpi/pcihp.c +++ b/hw/acpi/pcihp.c @@ -116,6 +116,12 @@ static void acpi_set_pci_info(void) bsel_is_set = true; if (!host) { + /* + * This function can be eventually called from + * qemu_devices_reset() -> acpi_pcihp_reset() even + * for architectures other than i386. Hence, we need + * to ignore null values for host here. + */ return; } @@ -136,6 +142,8 @@ static void acpi_pcihp_disable_root_bus(void) return; } + assert(host); + bus = PCI_HOST_BRIDGE(host)->bus; if (bus) { /* setting the hotplug handler to NULL makes the bus non-hotpluggable */ diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 17836149fe..83fb1d55c0 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -321,9 +321,7 @@ static void acpi_get_pci_holes(Range *hole, Range *hole64) pci_host = acpi_get_i386_pci_host(); - if (!pci_host) { - return; - } + assert(pci_host); range_set_bounds1(hole, object_property_get_uint(pci_host, @@ -1769,9 +1767,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, pci_host = acpi_get_i386_pci_host(); - if (pci_host) { - bus = PCI_HOST_BRIDGE(pci_host)->bus; - } + assert(pci_host); + + bus = PCI_HOST_BRIDGE(pci_host)->bus; if (bus) { Aml *scope = aml_scope("PCI0"); @@ -2389,9 +2387,8 @@ static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg) QObject *o; pci_host = acpi_get_i386_pci_host(); - if (!pci_host) { - return false; - } + + assert(pci_host); o = object_property_get_qobject(pci_host, PCIE_HOST_MCFG_BASE, NULL); if (!o) { -- 2.25.1