On Di, 2016-02-02 at 19:16 +0100, Andreas Färber wrote: > Am 02.02.2016 um 14:36 schrieb Markus Armbruster: > > Gerd Hoffmann <kra...@redhat.com> writes: > > > >> This patch marks usb-bot as hot-pluggable device, makes attached > >> property settable and turns off auto-attach in case the device > >> was hotplugged. > >> > >> Hot-plugging a usb-bot device with one or more scsi devices can be > >> done this way now: > >> > >> (1) device-add usb-bot,id=foo > >> (2) device-add scsi-{hd,cd},bus=foo.0,lun=0 > >> (2b) optionally add more devices (luns 0 ... 15). > >> (3) qom-set foo.attached = true > > > > This isn't exactly pretty, but it beats no hot plug. > > > > A general solution for hot plugging composite devices could perhaps be > > prettier, but I'm not aware of any recent work in the area. Andreas, > > Paolo? > > Not aware, no. Essentially we'd need a DeviceClass::dont_realize flag, > right?
Naa, not that simple I think. We would need some way to create a group of devices, then plug them all at once. Case one is multi-function pci. Case two are usb storage devices (bot + uas aka bulk-only-transport and usb-attached-scsi). I'm not aware of other cases. Multifunction pci has been handled recently with a pci-specific hack: pci functions are not visible to the guest until function 0 is plugged. So you just have to plug them in the correct order (function 0 last) to get things going. Works because the common pci slot implicitly groups devices. So this is handles the usb storage devices with a usb specific hack: usb devices can exist without being visible to the guest (attached=false). We can use that to create the device group (usb storage adapter and the scsi device(s) connected to it) without the guest seeing a half-composed device, when done we go flip the visibility. cheers, Gerd