On 10/2/18 10:37 PM, Marcel Apfelbaum wrote: > Hi Philippe, Peter > > On 10/2/18 10:59 PM, Philippe Mathieu-Daudé wrote: >> On 10/2/18 3:13 PM, Peter Maydell wrote: >>> On 1 October 2018 at 23:09, Philippe Mathieu-Daudé <f4...@amsat.org> >>> wrote: >>>> Move from the legacy SysBusDevice::init method to using >>>> DeviceState::realize. >>> Comment says DeviceState::realize but the code is using >>> PCIDevice::realize ? >>> >>> I didn't realize pci devices had their own realize method: >>> what's the difference between it and plain old DeviceState::realize, > > PCIDevice:realize handles PCI specific "realization" tasks: > * setup of the PCI configuration space > * PCI BARs configuration > * MSI initalization > *... > > The PCIDevice's DeviceState::realize function named 'pci_qdev_realize' > calls PCIDevice:realize after it runs some generic initialization code. > > It is possible we have this design so we would be able to move from > "qdev" to QOM.
Thanks Marcel, so this patch is incorrect. TYPE_SH_PCI_HOST_BRIDGE inherits TYPE_PCI_HOST_BRIDGE which inherits TYPE_SYS_BUS_DEVICE which inherits TYPE_DEVICE, so can implement DeviceState::realize but not PCIDevice::realize. TYPE_"sh_pci_host" inherits TYPE_PCI_DEVICE, so can implement PCIDevice::realize. I'll respin. > Thanks, > Marcel > >>> which they also have, since PCIDeviceClass inherits from DeviceClass ? >> Cc'ing Michael and Marcel.