diff options
author | Gerd Hoffmann | 2016-06-15 11:46:58 +0200 |
---|---|---|
committer | Gerd Hoffmann | 2016-06-22 12:53:26 +0200 |
commit | b78ecd0998094a8b7e0f14c4888f3a6b525d14ff (patch) | |
tree | ac2b172155cd0f42ed827080d35e1cb091ebf662 | |
parent | usb: Add QOM property "attached". (diff) | |
download | qemu-b78ecd0998094a8b7e0f14c4888f3a6b525d14ff.tar.gz qemu-b78ecd0998094a8b7e0f14c4888f3a6b525d14ff.tar.xz qemu-b78ecd0998094a8b7e0f14c4888f3a6b525d14ff.zip |
usb-bot: hotplug support
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
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: 1465984019-28963-5-git-send-email-kraxel@redhat.com
-rw-r--r-- | hw/usb/dev-storage.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c index bbd6f4fc5f..4d605b8a6a 100644 --- a/hw/usb/dev-storage.c +++ b/hw/usb/dev-storage.c @@ -634,9 +634,14 @@ static void usb_msd_realize_storage(USBDevice *dev, Error **errp) static void usb_msd_realize_bot(USBDevice *dev, Error **errp) { MSDState *s = USB_STORAGE_DEV(dev); + DeviceState *d = DEVICE(dev); usb_desc_create_serial(dev); usb_desc_init(dev); + if (d->hotplugged) { + s->dev.auto_attach = 0; + } + scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(dev), &usb_msd_scsi_info_bot, NULL); usb_msd_handle_reset(dev); @@ -806,10 +811,9 @@ static void usb_msd_instance_init(Object *obj) static void usb_msd_class_initfn_bot(ObjectClass *klass, void *data) { USBDeviceClass *uc = USB_DEVICE_CLASS(klass); - DeviceClass *dc = DEVICE_CLASS(klass); uc->realize = usb_msd_realize_bot; - dc->hotpluggable = false; + uc->attached_settable = true; } static const TypeInfo msd_info = { |