On Mon, 2013-09-09 at 14:19 +0100, Peter Maydell wrote: > On 9 September 2013 14:15, Marcel Apfelbaum <marce...@redhat.com> wrote: > > On Mon, 2013-09-09 at 14:02 +0100, Peter Maydell wrote: > >> Can you just pick the device which is (a subclass of) > >> TYPE_PCI_HOST_BRIDGE, or do we have host bridges which > >> aren't using that class? > > This is what I would really want to do, but some HOST Bridge devices > > inherit directly from PCI_DEVICE. > > > TYPE_PCI_HOST_BRIDGE derives from TYPE_SYS_BUS_DEVICE which > > is a not a PCI device and does not help us here (not a PCI_DEVICE > > on the bus) > > Oops, yes, I get those two the wrong way round a lot. Anyway, > if we need to make all host bridges have a common subclass > we could certainly refactor them accordingly. > > > Strangely TYPE_Q35_HOST_DEVICE derives from TYPE_SYS_BUS_DEVICE > > and it hold as composition a PCIDevice that will be part of > > the bus, as opposed to TYPE_I440FX_PCI_DEVICE which directly > > inherits from PCI_DEVICE. > > This may just be wrong choice of name rather than actually > wrong hierarchy. I try not to "judge" the naming convention, so let's leave it aside for now. My issue is that we have at least 2 ways to model the bridges: 1. TYPE_PCI_HOST_BRIDGE * derives from TYPE_SYS_BUS_DEVICE * has a bus * one of the bus devices is a TYPE_I440FX_PCI_DEVICE which derives from TYPE_PCI_DEVICE 2. TYPE_PCIE_HOST_BRIDGE * derives from TYPE_PCI_HOST_BRIDGE which derives from TYPE_SYS_BUS_DEVICE * has a PciDevice and register it to the bus in order to work as (1)
I would like to implement an hierarchy that will allow all the host bridge devices to have a common ancestor In this was, we can scan the PCI bus to look for master... > > -- PMM