Changes since v1: * added usb-uas test * drop hotplug check in bus_add_child() * make SCSI & USB bus as default HotplugHandler * fixed dummy HBA hot(un)plug * fixed hotunplug on s390x * prevent hotplug of non hotpluggable devices --
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_v2 Igor Mammedov (36): test: virtio-scsi: check if hot-plug/unplug works test: virtio-serial: check if hot-plug/unplug works test: libqos: add qpci_plug_device_test() and qpci_unplug_acpi_device_test() 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: move uhci port test code to libqos/usb.c test: usb: add port test to uhci unit test test: usb: generic usb device hotplug test: usb: usb-storage hotplug test test: usb: usb-uas hotplug test access BusState.allow_hotplug using wraper qbus_is_hotpluggable() qdev: do not allow to instantiate non hotpluggable device with device_add qdev: HotplugHandler: rename unplug callback to unplug_request qdev: HotplugHandler: provide unplug callback qdev: add simple/generic unplug callback for HotplugHandler qdev: add wrapper to set BUS as HotplugHandler qdev: drop hotplug check from bus_add_child() target-i386: ICC bus: drop BusState.allow_hotplug virtio-pci: drop BusState.allow_hotplug 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: set SCSI BUS itself as default HotplugHandler scsi: convert pvscsi HBA to hotplug handler API scsi: convert virtio-scsi HBA to hotplug handler API scsi: cleanup not used anymore SCSIBusInfo{hotplug,hot_unplug} fields usb-bot: mark device as non hotpluggable usb-bot: drop not needed "allow_hotplug = 0" usb-storage: drop not needed "allow_hotplug = 0" usb: convert usb-ccid to hotplug handler API usb: convert usb devices 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 | 85 ++++++++++++++++++++++++++++-------------- hw/cpu/icc_bus.c | 8 ---- 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 | 12 +++--- hw/s390x/virtio-ccw.c | 17 +++++---- hw/scsi/scsi-bus.c | 24 ++++-------- hw/scsi/virtio-scsi.c | 30 ++++++++++----- hw/scsi/vmw_pvscsi.c | 26 +++++++++---- hw/usb/bus.c | 9 ++++- hw/usb/dev-smartcard-reader.c | 8 +++- hw/usb/dev-storage.c | 4 +- hw/virtio/virtio-mmio.c | 17 +-------- hw/virtio/virtio-pci.c | 3 -- include/hw/hotplug.h | 16 +++++++- include/hw/pci/pcie.h | 4 +- include/hw/pci/shpc.h | 4 +- include/hw/qdev-core.h | 17 +++++---- include/hw/scsi/scsi.h | 2 - qdev-monitor.c | 5 ++- tests/Makefile | 13 ++++--- tests/libqos/pci-pc.c | 49 ++++++++++++++++++++++++ tests/libqos/pci.h | 3 ++ tests/libqos/usb.c | 71 +++++++++++++++++++++++++++++++++++ tests/libqos/usb.h | 17 +++++++++ tests/usb-hcd-ehci-test.c | 50 ++++++++++--------------- tests/usb-hcd-ohci-test.c | 10 ++++- tests/usb-hcd-uhci-test.c | 65 +++++++++++++++++++++++++++++++- tests/usb-hcd-xhci-test.c | 68 ++++++++++++++++++++++++++++++++- tests/virtio-blk-test.c | 49 ++++++++++++++++++------ tests/virtio-net-test.c | 10 +++++ tests/virtio-rng-test.c | 10 +++++ tests/virtio-scsi-test.c | 29 ++++++++++++++ tests/virtio-serial-test.c | 27 ++++++++++++++ 43 files changed, 624 insertions(+), 201 deletions(-) create mode 100644 tests/libqos/usb.c create mode 100644 tests/libqos/usb.h -- 1.8.3.1