[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/26] hw: i386: Refactor PCI host getter
From: |
Samuel Ortiz |
Subject: |
[Qemu-devel] [PATCH 07/26] hw: i386: Refactor PCI host getter |
Date: |
Mon, 22 Oct 2018 20:36:37 +0200 |
From: Yang Zhong <address@hidden>
Make it more flexible by having it parsing a PCI host paths array
instead of open coding those paths deep down into the code logic itself.
This will be needed for PCI machine types that are neither emulatiing the
ich9 nor the i440fx chipsets.
Cc: "Michael S. Tsirkin" <address@hidden>
Cc: Igor Mammedov <address@hidden>
Cc: Paolo Bonzini <address@hidden>
Cc: Richard Henderson <address@hidden>
Cc: Eduardo Habkost <address@hidden>
Cc: Marcel Apfelbaum <address@hidden>
Signed-off-by: Yang Zhong <address@hidden>
---
hw/i386/acpi-build.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index d3cb1b439d..6652880c9b 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -114,6 +114,12 @@ typedef struct AcpiBuildPciBusHotplugState {
bool pcihp_bridge_en;
} AcpiBuildPciBusHotplugState;
+static const char *pci_hosts[] = {
+ "/machine/i440fx",
+ "/machine/q35",
+ NULL,
+};
+
static void init_common_fadt_data(Object *o, AcpiFadtData *data)
{
uint32_t io = object_property_get_uint(o, ACPI_PM_PROP_PM_IO_BASE, NULL);
@@ -238,27 +244,30 @@ static void acpi_get_misc_info(AcpiMiscInfo *info)
* Because of the PXB hosts we cannot simply query TYPE_PCI_HOST_BRIDGE.
* On i386 arch we only have two pci hosts, so we can look only for them.
*/
-static Object *acpi_get_i386_pci_host(void)
+static Object *acpi_get_pci_host(void)
{
PCIHostState *host;
+ int i = 0;
- host = OBJECT_CHECK(PCIHostState,
- object_resolve_path("/machine/i440fx", NULL),
- TYPE_PCI_HOST_BRIDGE);
- if (!host) {
+ while (pci_hosts[i]) {
host = OBJECT_CHECK(PCIHostState,
- object_resolve_path("/machine/q35", NULL),
+ object_resolve_path(pci_hosts[i], NULL),
TYPE_PCI_HOST_BRIDGE);
+ if (host) {
+ return OBJECT(host);
+ }
+
+ i++;
}
- return OBJECT(host);
+ return NULL;
}
static void acpi_get_pci_holes(Range *hole, Range *hole64)
{
Object *pci_host;
- pci_host = acpi_get_i386_pci_host();
+ pci_host = acpi_get_pci_host();
g_assert(pci_host);
range_set_bounds1(hole,
@@ -1636,7 +1645,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
Object *pci_host;
PCIBus *bus = NULL;
- pci_host = acpi_get_i386_pci_host();
+ pci_host = acpi_get_pci_host();
if (pci_host) {
bus = PCI_HOST_BRIDGE(pci_host)->bus;
}
@@ -2009,7 +2018,7 @@ static bool acpi_get_mcfg(AcpiMcfgInfo *mcfg)
Object *pci_host;
QObject *o;
- pci_host = acpi_get_i386_pci_host();
+ pci_host = acpi_get_pci_host();
g_assert(pci_host);
o = object_property_get_qobject(pci_host, PCIE_HOST_MCFG_BASE, NULL);
--
2.17.2
- [Qemu-devel] [PATCH 00/27] ACPI hardware-reduced support, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 02/26] hw: acpi: Export ACPI build alignment API, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 01/26] hw: i386: Decouple the ACPI build from the PC machine type, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 03/26] hw: acpi: Export the RSDP build API, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 04/26] hw: arm: Switch to the AML build RSDP building routine, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 06/26] hw: acpi: Factorize _OSC AML across architectures, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 05/26] hw: acpi: Generalize AML build routines, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 07/26] hw: i386: Refactor PCI host getter,
Samuel Ortiz <=
- [Qemu-devel] [PATCH 11/26] hw: i386: Make the hotpluggable memory size property more generic, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 13/26] hw: acpi: Fix memory hotplug AML generation error, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 10/26] hw: acpi: Do not create hotplug method when handler is not defined, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 12/26] hw: acpi: Export the SRAT AML build API, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 09/26] hw: acpi: Export the MCFG getter, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 08/26] hw: acpi: Export and generalize the PCI host AML API, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 14/26] hw: acpi: Export the PCI hotplug API, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 15/26] hw: acpi: Retrieve the PCI bus from AcpiPciHpState, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 16/26] hw: fw-build: Add firmware build methods and state, Samuel Ortiz, 2018/10/22
- [Qemu-devel] [PATCH 17/26] hw: i386: Convert PC machine type to firmware build methods, Samuel Ortiz, 2018/10/22