[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 5/8] virtio-ccw: implement ->device_plugged
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PULL 5/8] virtio-ccw: implement ->device_plugged |
Date: |
Fri, 8 May 2015 11:08:32 +0200 |
Let's move operations that are only valid after the backend has been
realized to a ->device_plugged callback, just as virtio-pci does.
Also reorder setting up the host feature bits to the sequence used
by virtio-pci.
While we're at it, also add a ->device_unplugged callback to stop
ioeventfd, just to be on the safe side.
Reviewed-by: Shannon Zhao <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
Message-Id: <address@hidden>
---
hw/s390x/virtio-ccw.c | 41 ++++++++++++++++++++++++++---------------
1 file changed, 26 insertions(+), 15 deletions(-)
diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
index 1c2bd9d..430cc6f 100644
--- a/hw/s390x/virtio-ccw.c
+++ b/hw/s390x/virtio-ccw.c
@@ -652,10 +652,8 @@ static void virtio_ccw_device_realize(VirtioCcwDevice
*dev, Error **errp)
bool found = false;
SubchDev *sch;
int num;
- DeviceState *parent = DEVICE(dev);
Error *err = NULL;
VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_GET_CLASS(dev);
- VirtIODevice *vdev;
sch = g_malloc0(sizeof(SubchDev));
@@ -778,19 +776,6 @@ static void virtio_ccw_device_realize(VirtioCcwDevice
*dev, Error **errp)
goto out_err;
}
- /* device_id is only set after vdev has been realized */
- vdev = virtio_ccw_get_vdev(sch);
- sch->id.cu_model = vdev->device_id;
-
- /* Only the first 32 feature bits are used. */
- dev->host_features[0] = virtio_bus_get_vdev_features(&dev->bus,
-
dev->host_features[0]);
-
- virtio_add_feature(&dev->host_features[0], VIRTIO_F_NOTIFY_ON_EMPTY);
- virtio_add_feature(&dev->host_features[0], VIRTIO_F_BAD_FEATURE);
-
- css_generate_sch_crws(sch->cssid, sch->ssid, sch->schid,
- parent->hotplugged, 1);
return;
out_err:
@@ -1428,6 +1413,30 @@ static int virtio_ccw_load_config(DeviceState *d,
QEMUFile *f)
return 0;
}
+/* This is called by virtio-bus just after the device is plugged. */
+static void virtio_ccw_device_plugged(DeviceState *d)
+{
+ VirtioCcwDevice *dev = VIRTIO_CCW_DEVICE(d);
+ SubchDev *sch = dev->sch;
+
+ sch->id.cu_model = virtio_bus_get_vdev_id(&dev->bus);
+
+ /* Only the first 32 feature bits are used. */
+ virtio_add_feature(&dev->host_features[0], VIRTIO_F_NOTIFY_ON_EMPTY);
+ virtio_add_feature(&dev->host_features[0], VIRTIO_F_BAD_FEATURE);
+ dev->host_features[0] = virtio_bus_get_vdev_features(&dev->bus,
+
dev->host_features[0]);
+
+ css_generate_sch_crws(sch->cssid, sch->ssid, sch->schid,
+ d->hotplugged, 1);
+}
+
+static void virtio_ccw_device_unplugged(DeviceState *d)
+{
+ VirtioCcwDevice *dev = VIRTIO_CCW_DEVICE(d);
+
+ virtio_ccw_stop_ioeventfd(dev);
+}
/**************** Virtio-ccw Bus Device Descriptions *******************/
static Property virtio_ccw_net_properties[] = {
@@ -1752,6 +1761,8 @@ static void virtio_ccw_bus_class_init(ObjectClass *klass,
void *data)
k->load_queue = virtio_ccw_load_queue;
k->save_config = virtio_ccw_save_config;
k->load_config = virtio_ccw_load_config;
+ k->device_plugged = virtio_ccw_device_plugged;
+ k->device_unplugged = virtio_ccw_device_unplugged;
}
static const TypeInfo virtio_ccw_bus_info = {
--
2.4.0
- [Qemu-devel] [PULL 0/8] s390x: various patches, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 1/8] s390-virtio: Accommodate guests using virtqueues too early, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 2/8] s390-virtio: use common features, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 3/8] s390-virtio: clear {used, avail}_event_idx on reset as well, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 4/8] virtio-ccw: change realization sequence, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 5/8] virtio-ccw: implement ->device_plugged,
Cornelia Huck <=
- [Qemu-devel] [PULL 6/8] s390x/kvm: use ioctl KVM_S390_IRQ for vcpu interrupts, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 7/8] s390x: move fpu regs into a subsection of the vmstate, Cornelia Huck, 2015/05/08
- [Qemu-devel] [PULL 8/8] s390x/kvm: migrate vcpu interrupt state, Cornelia Huck, 2015/05/08
- Re: [Qemu-devel] [PULL 0/8] s390x: various patches, Peter Maydell, 2015/05/11