Series unifies different hotplug mechanisms to a recent hotplug-handler API and does shallow conversion of devices that still use legacy qdev hotplug to it dropping not used after that legacy hotplug path [29/30]. It also relaces SCSI's own way to do hotplug/unplug with hotplug-handler callbacks leaving it the only method perform hotplug tasks. And the last patch [30/30] allows to unplug of BUS-less devices using hotplug-handler API.
Converted devices are covered with new hotplug unit-tests, except of: s390x-*: I have no idea how or means to test it, but code is close to virtio, so it's converted using virtio template pvscsi: is broken, so no means to test it Git tree for testing: https://github.com/imammedo/qemu/commits/hp_ctrl_conversion_v1 Igor Mammedov (30): test: virtio-scsi: check if hot-plug/unplug works test: virtio-serial: check if hot-plug/unplug works test: virtio-rng: check if hot-plug/unplug works test: virtio-net: check if hot-plug/unplug works test: virtio-blk: check if hot-plug/unplug works test: usb: add port test to uhci unit test test: usb: generic usb device hotplug test: usb: usb-storage hotplug test access BusState.allow_hotplug using wraper qbus_is_hotpluggable() qdev: HotplugHandler: rename unplug callback to unplug_request qdev: HotplugHandler: provide unplug callback qdev: add simple/generic unplug callback for HotplugHandler qdev: hotplug: set handler only if HOTPLUG_HANDLER interface is supported target-i386: ICC bus: replace BusState.allow_hotplug with hotplug_handler virtio-pci: replace BusState.allow_hotplug with hotplug_handler virtio-serial: convert to hotplug-handler API virtio-mmio: drop useless bus->allow_hotplug = 0 s390x: drop not used allow_hotplug in event-facility s390x: convert s390-virtio to hotplug handler API s390x: convert virtio-ccw to hotplug handler API scsi: make scsi_bus_new() assign hotplug controller scsi: convert pvscsi HBA to hotplug hander API scsi: convert virtio-scsi HBA to hotplug handler API scsi: cleanup not used anymore SCSIBusInfo{hotplug,hot_unplug} fields usb-bot: drop not needed "allow_hotplug = 0" usb-storage: make its storage SCSI bus hotpluggable explicitly usb-storage: drop not needed "allow_hotplug = 0" usb: convert to hotplug handler API qdev: drop legacy hotplug fields/methods qdev: HotplugHandler: add support for unplugging BUS-less devices hw/acpi/piix4.c | 6 ++-- hw/char/virtio-serial-bus.c | 20 ++++++++--- hw/core/hotplug.c | 11 +++++++ hw/core/qdev.c | 66 ++++++++++++++++++++++--------------- hw/cpu/icc_bus.c | 20 ++++++----- hw/i386/acpi-build.c | 2 +- hw/isa/lpc_ich9.c | 6 ++-- hw/pci-bridge/pci_bridge_dev.c | 2 +- hw/pci/pci-hotplug-old.c | 4 +-- hw/pci/pcie.c | 4 +-- hw/pci/pcie_port.c | 2 +- hw/pci/shpc.c | 4 +-- hw/s390x/event-facility.c | 2 -- hw/s390x/s390-virtio-bus.c | 19 ++++++++--- hw/s390x/virtio-ccw.c | 24 +++++++++----- hw/scsi/scsi-bus.c | 18 +--------- hw/scsi/virtio-scsi.c | 28 ++++++++++------ hw/scsi/vmw_pvscsi.c | 24 +++++++++----- hw/usb/bus.c | 3 +- hw/usb/dev-smartcard-reader.c | 8 ++++- hw/usb/dev-storage.c | 6 ++-- hw/usb/hcd-ehci-pci.c | 6 ++++ hw/usb/hcd-ehci-sysbus.c | 6 ++++ hw/usb/hcd-ohci.c | 12 +++++++ hw/usb/hcd-uhci.c | 6 ++++ hw/usb/hcd-xhci.c | 6 ++++ hw/virtio/virtio-mmio.c | 17 ++-------- hw/virtio/virtio-pci.c | 8 +++-- include/hw/hotplug.h | 18 ++++++++-- include/hw/pci/pcie.h | 4 +-- include/hw/pci/shpc.h | 4 +-- include/hw/qdev-core.h | 15 ++++++--- include/hw/scsi/scsi.h | 2 -- qdev-monitor.c | 2 +- tests/Makefile | 9 ++--- tests/test-usb-hcd-common.c | 71 +++++++++++++++++++++++++++++++++++++++ tests/test-usb-hcd-common.h | 16 +++++++++ tests/usb-hcd-ehci-test.c | 50 +++++++++++----------------- tests/usb-hcd-ohci-test.c | 10 ++++-- tests/usb-hcd-uhci-test.c | 64 +++++++++++++++++++++++++++++++++-- tests/usb-hcd-xhci-test.c | 11 +++++-- tests/virtio-blk-test.c | 75 +++++++++++++++++++++++++++++++++++------- tests/virtio-net-test.c | 39 ++++++++++++++++++++++ tests/virtio-rng-test.c | 38 +++++++++++++++++++++ tests/virtio-scsi-test.c | 29 ++++++++++++++++ tests/virtio-serial-test.c | 27 +++++++++++++++ 46 files changed, 631 insertions(+), 193 deletions(-) create mode 100644 tests/test-usb-hcd-common.c create mode 100644 tests/test-usb-hcd-common.h -- 1.8.3.1