Alexey Kardashevskiy <a...@ozlabs.ru> writes: > Recent changes introduced cannot_instantiate_with_device_add_yet > and removed capability of adding yet another PCI host bridge via > command line for SPAPR platform (POWERPC64 server).
Specifically: commit 837d37167dc446af8a91189108b363c04609e296 Author: Markus Armbruster <arm...@redhat.com> Date: Thu Nov 28 17:26:55 2013 +0100 sysbus: Set cannot_instantiate_with_device_add_yet device_add plugs devices into suitable bus. For "real" buses, that actually connects the device. For sysbus, the connections need to be made separately, and device_add can't do that. The device would be left unconnected, and could not possibly work. Quite a few, but not all sysbus devices already set cannot_instantiate_with_device_add_yet in their class init function. Set it in their abstract base's class init function sysbus_device_class_init(), and remove the now redundant assignments from device class init functions. Signed-off-by: Markus Armbruster <arm...@redhat.com> Reviewed-by: Marcel Apfelbaum <marce...@redhat.com> Signed-off-by: Andreas Färber <afaer...@suse.de> Always good to point to specific commits in commit messages instead of hand-waving "recent changes". > This brings the capability back and puts SPAPR PHB into "bridge" > category. Look, a sysbus device that grabs the resources it needs from its init() callback instead of getting connected to them by the code that creates it! I'm not sure that's proper, but if it works... Maybe Andreas (cc'ed) can advise. > This is not much use for emulated PHB but it is absolutely required > for VFIO as we put an IOMMU group onto a separate PHB on SPAPR. > > Cc: Markus Armbruster <arm...@redhat.com> > Signed-off-by: Alexey Kardashevskiy <a...@ozlabs.ru> > --- > > Are -device and device_add considered synonims? SPAPR PHB can be added > via the command line just fine but cannot from device_add as > "Bus 'main-system-bus' does not support hotplugging". -device is cold plug, device_add is hot plug. device_add could be improved to do cold plug when used before the machine starts.