Hi, Composite device hotplug is a long-standing issue in qemu.
PCI multifunction hotplug has been solved recently in a pci-specific way, by simply not showing hot-plugged functions to the guest until function #0 is plugged. So I figured we maybe should check whenever we can apply a simliar trick to USB composite devices. As the usb subsystem already can hide usb devices from the guest (used for example with usb-host, in case the physical usb device is not plugged in the host machine) this turned out to be surprisingly simple. So, here we go. Basic idea is the "attached" state becomes settable via monitor. Now you can create a usb-bot (or usb-uas) device, then attach the scsi device(s) you want, and when you are done you flip attached to true to make the composed device visible to the guest. v2 changes: * rebased to latest master. * add patch #1 (kill dead code for qcow2 encryption). * reword patch #3 as suggested by Markus. please review, Gerd Gerd Hoffmann (5): usb-storage: qcow2 encryption support is finally gone, zap dead code usb: make USBDevice->attached bool usb: Add QOM property "attached ". usb-bot: hotplug support usb-uas: hotplug support hw/usb/bus.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- hw/usb/dev-storage.c | 42 ++++++------------------------------------ hw/usb/dev-uas.c | 5 +++++ include/hw/usb.h | 3 ++- 4 files changed, 59 insertions(+), 41 deletions(-) -- 1.8.3.1
