On 11/16/2015 08:26 PM, Eduardo Habkost wrote:
On Sun, Nov 15, 2015 at 05:39:05PM +0200, Marcel Apfelbaum wrote:
Look for pxb devices on both i386 machines.
Signed-off-by: Marcel Apfelbaum <mar...@redhat.com>
[...]
diff --git a/hw/pci-host/q35.c b/hw/pci-host/q35.c
index c81507d..2fbbcd3 100644
--- a/hw/pci-host/q35.c
+++ b/hw/pci-host/q35.c
@@ -511,6 +511,14 @@ static void mch_realize(PCIDevice *d, Error **errp)
}
}
+PCIBus *find_q35(void)
+{
+ PCIHostState *s = OBJECT_CHECK(PCIHostState,
+ object_resolve_path("/machine/q35", NULL),
+ TYPE_PCI_HOST_BRIDGE);
Hi Eduardo,
Thanks for the review.
Why not use the PCI_HOST_BRIDGE macro?
Do you mean ?
PCIHostState *s = PCI_HOST_BRIDGE(object_resolve_path("/machine/q35",
NULL));
I can use it, thanks -- I was doing the usual copy/paste of the i440fx
counterpart :)
+ return s ? s->bus : NULL;
+}
+
uint64_t mch_mcfg_base(void)
{
bool ambiguous;
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 4bbc0ff..95d7610 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -242,6 +242,15 @@ PCIBus *i440fx_init(const char *host_type, const char
*pci_type,
MemoryRegion *ram_memory);
PCIBus *find_i440fx(void);
+PCIBus *find_q35(void);
+
+static inline PCIBus *find_pc(void)
+{
+ PCIBus *bus = find_i440fx();
+
+ return bus ? bus : find_q35();
Have you considered a /machine/pci link, or (in case you don't
want to add something new to the QOM tree) a simple
PCMachineState::pci_bus struct field?
This is a nice idea, I like the PC machine state, I'll look into it.
Thanks,
Marcel