Message ID | 20200708224615.114077-2-jusual@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Use ACPI PCI hot-plug for q35 | expand |
On Thu, 9 Jul 2020 00:46:11 +0200 Julia Suvorova <jusual@redhat.com> wrote: > Returns the current host bus with ACPI PCI hot-plug support: q35 or i440fx. > > Signed-off-by: Julia Suvorova <jusual@redhat.com> > --- > hw/i386/acpi-build.h | 2 ++ > hw/acpi/pcihp.c | 13 +++++++++++++ > hw/i386/acpi-build.c | 2 +- > 3 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/hw/i386/acpi-build.h b/hw/i386/acpi-build.h > index 74df5fc612..0696b4e48d 100644 > --- a/hw/i386/acpi-build.h > +++ b/hw/i386/acpi-build.h > @@ -7,4 +7,6 @@ extern const struct AcpiGenericAddress x86_nvdimm_acpi_dsmio; > > void acpi_setup(void); > > +Object *acpi_get_i386_pci_host(void); > + > #endif > diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c > index d42906ea19..3d4ee3af72 100644 > --- a/hw/acpi/pcihp.c > +++ b/hw/acpi/pcihp.c > @@ -33,10 +33,12 @@ > #include "hw/acpi/acpi.h" > #include "exec/address-spaces.h" > #include "hw/pci/pci_bus.h" > +#include "hw/pci/pci_host.h" > #include "migration/vmstate.h" > #include "qapi/error.h" > #include "qom/qom-qobject.h" > #include "trace.h" > +#include "hw/i386/acpi-build.h" > > #define ACPI_PCIHP_ADDR 0xae00 > #define ACPI_PCIHP_SIZE 0x0014 > @@ -86,6 +88,17 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque) > return bsel_alloc; > } > > +static PCIBus *find_host(void) > +{ > + Object *obj = acpi_get_i386_pci_host(); > + > + if (obj) { > + return PCI_HOST_BRIDGE(obj)->bus; > + } > + > + return NULL; > +} My guess you are adding it for 5/5, with a function name a bit off compared to what you are doing (probably you've tried to reuse find_i440fx() idea) I'd just make acpi_get_i386_pci_host() public, drop find_host and use host = acpi_get_i386_pci_host() bus = PCI_HOST_BRIDGE(pci_host)->bus like it's done elsewhere > static void acpi_set_pci_info(void) > { > static bool bsel_is_set; > diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c > index 900f786d08..11c598f955 100644 > --- a/hw/i386/acpi-build.c > +++ b/hw/i386/acpi-build.c > @@ -270,7 +270,7 @@ 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) > +Object *acpi_get_i386_pci_host(void) > { > PCIHostState *host; >
diff --git a/hw/i386/acpi-build.h b/hw/i386/acpi-build.h index 74df5fc612..0696b4e48d 100644 --- a/hw/i386/acpi-build.h +++ b/hw/i386/acpi-build.h @@ -7,4 +7,6 @@ extern const struct AcpiGenericAddress x86_nvdimm_acpi_dsmio; void acpi_setup(void); +Object *acpi_get_i386_pci_host(void); + #endif diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c index d42906ea19..3d4ee3af72 100644 --- a/hw/acpi/pcihp.c +++ b/hw/acpi/pcihp.c @@ -33,10 +33,12 @@ #include "hw/acpi/acpi.h" #include "exec/address-spaces.h" #include "hw/pci/pci_bus.h" +#include "hw/pci/pci_host.h" #include "migration/vmstate.h" #include "qapi/error.h" #include "qom/qom-qobject.h" #include "trace.h" +#include "hw/i386/acpi-build.h" #define ACPI_PCIHP_ADDR 0xae00 #define ACPI_PCIHP_SIZE 0x0014 @@ -86,6 +88,17 @@ static void *acpi_set_bsel(PCIBus *bus, void *opaque) return bsel_alloc; } +static PCIBus *find_host(void) +{ + Object *obj = acpi_get_i386_pci_host(); + + if (obj) { + return PCI_HOST_BRIDGE(obj)->bus; + } + + return NULL; +} + static void acpi_set_pci_info(void) { static bool bsel_is_set; diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 900f786d08..11c598f955 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -270,7 +270,7 @@ 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) +Object *acpi_get_i386_pci_host(void) { PCIHostState *host;
Returns the current host bus with ACPI PCI hot-plug support: q35 or i440fx. Signed-off-by: Julia Suvorova <jusual@redhat.com> --- hw/i386/acpi-build.h | 2 ++ hw/acpi/pcihp.c | 13 +++++++++++++ hw/i386/acpi-build.c | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-)