[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 32/47] scsi: Convert pvscsi HBA to hotplug handler AP
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PULL 32/47] scsi: Convert pvscsi HBA to hotplug handler API |
Date: |
Wed, 15 Oct 2014 05:09:06 +0200 |
From: Igor Mammedov <address@hidden>
Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
hw/scsi/vmw_pvscsi.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
index 5734d19..d3a92fb 100644
--- a/hw/scsi/vmw_pvscsi.c
+++ b/hw/scsi/vmw_pvscsi.c
@@ -524,17 +524,20 @@ pvscsi_send_msg(PVSCSIState *s, SCSIDevice *dev, uint32_t
msg_type)
}
static void
-pvscsi_hotplug(SCSIBus *bus, SCSIDevice *dev)
+pvscsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
{
- PVSCSIState *s = container_of(bus, PVSCSIState, bus);
- pvscsi_send_msg(s, dev, PVSCSI_MSG_DEV_ADDED);
+ PVSCSIState *s = PVSCSI(hotplug_dev);
+
+ pvscsi_send_msg(s, SCSI_DEVICE(dev), PVSCSI_MSG_DEV_ADDED);
}
static void
-pvscsi_hot_unplug(SCSIBus *bus, SCSIDevice *dev)
+pvscsi_hot_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp)
{
- PVSCSIState *s = container_of(bus, PVSCSIState, bus);
- pvscsi_send_msg(s, dev, PVSCSI_MSG_DEV_REMOVED);
+ PVSCSIState *s = PVSCSI(hotplug_dev);
+
+ pvscsi_send_msg(s, SCSI_DEVICE(dev), PVSCSI_MSG_DEV_REMOVED);
+ qdev_simple_device_unplug_cb(hotplug_dev, dev, errp);
}
static void
@@ -1057,8 +1060,6 @@ static const struct SCSIBusInfo pvscsi_scsi_info = {
.get_sg_list = pvscsi_get_sg_list,
.complete = pvscsi_command_complete,
.cancel = pvscsi_request_cancelled,
- .hotplug = pvscsi_hotplug,
- .hot_unplug = pvscsi_hot_unplug,
};
static int
@@ -1092,6 +1093,8 @@ pvscsi_init(PCIDevice *pci_dev)
scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(pci_dev),
&pvscsi_scsi_info, NULL);
+ /* override default SCSI bus hotplug-handler, with pvscsi's one */
+ qbus_set_hotplug_handler(BUS(&s->bus), DEVICE(s), &error_abort);
pvscsi_reset_state(s);
return 0;
@@ -1187,6 +1190,7 @@ static void pvscsi_class_init(ObjectClass *klass, void
*data)
{
DeviceClass *dc = DEVICE_CLASS(klass);
PCIDeviceClass *k = PCI_DEVICE_CLASS(klass);
+ HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
k->init = pvscsi_init;
k->exit = pvscsi_uninit;
@@ -1199,6 +1203,8 @@ static void pvscsi_class_init(ObjectClass *klass, void
*data)
dc->props = pvscsi_properties;
set_bit(DEVICE_CATEGORY_STORAGE, dc->categories);
k->config_write = pvscsi_write_config;
+ hc->unplug = pvscsi_hot_unplug;
+ hc->plug = pvscsi_hotplug;
}
static const TypeInfo pvscsi_info = {
@@ -1206,6 +1212,10 @@ static const TypeInfo pvscsi_info = {
.parent = TYPE_PCI_DEVICE,
.instance_size = sizeof(PVSCSIState),
.class_init = pvscsi_class_init,
+ .interfaces = (InterfaceInfo[]) {
+ { TYPE_HOTPLUG_HANDLER },
+ { }
+ }
};
static void
--
1.8.4.5
- [Qemu-devel] [PULL 18/47] qdev: do not allow to instantiate non hotpluggable device with device_add, (continued)
- [Qemu-devel] [PULL 18/47] qdev: do not allow to instantiate non hotpluggable device with device_add, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 23/47] qdev: Drop hotplug check from bus_add_child(), Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 22/47] qdev: Add wrapper to set BUS as HotplugHandler, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 24/47] target-i386: ICC bus: Drop BusState::allow_hotplug, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 25/47] virtio-pci: Drop BusState::allow_hotplug, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 27/47] virtio-mmio: Drop useless bus->allow_hotplug = 0, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 29/47] s390x: Convert s390-virtio to hotplug handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 31/47] scsi: Set SCSI BUS itself as default HotplugHandler, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 30/47] s390x: Convert virtio-ccw to hotplug handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 34/47] scsi: Cleanup not used anymore SCSIBusInfo{hotplug, hot_unplug} fields, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 32/47] scsi: Convert pvscsi HBA to hotplug handler API,
Andreas Färber <=
- [Qemu-devel] [PULL 28/47] s390x: Drop not used allow_hotplug in event-facility, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 26/47] virtio-serial: Convert to hotplug-handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 33/47] scsi: Convert virtio-scsi HBA to hotplug handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 36/47] usb-bot: Drop not needed "allow_hotplug = 0", Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 37/47] usb-storage: Drop not needed "allow_hotplug = 0", Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 43/47] qdev: Add description field in PropertyInfo struct, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 38/47] usb: Convert usb-ccid to hotplug handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 35/47] usb-bot: Mark device as non hotpluggable, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 39/47] usb: Convert usb devices to hotplug handler API, Andreas Färber, 2014/10/14
- [Qemu-devel] [PULL 42/47] qdev: device_del: Search for to be unplugged device in 'peripheral' container, Andreas Färber, 2014/10/14