[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 20/30] s390x: convert virtio-ccw to hotplug hand
From: |
Cornelia Huck |
Subject: |
Re: [Qemu-devel] [PATCH 20/30] s390x: convert virtio-ccw to hotplug handler API |
Date: |
Thu, 25 Sep 2014 13:08:38 +0200 |
On Wed, 24 Sep 2014 11:48:09 +0000
Igor Mammedov <address@hidden> wrote:
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
> hw/s390x/virtio-ccw.c | 24 ++++++++++++++++--------
> 1 file changed, 16 insertions(+), 8 deletions(-)
Well, I think I now see what's going on here. More below...
> @@ -1620,13 +1620,13 @@ static Property virtio_ccw_properties[] = {
> static void virtio_ccw_device_class_init(ObjectClass *klass, void *data)
> {
> DeviceClass *dc = DEVICE_CLASS(klass);
> + HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
>
> dc->props = virtio_ccw_properties;
> dc->init = virtio_ccw_busdev_init;
> dc->exit = virtio_ccw_busdev_exit;
> - dc->unplug = virtio_ccw_busdev_unplug;
Before, this callback was invoked when a device of the virtio-ccw class
was unplugged.
> dc->bus_type = TYPE_VIRTUAL_CSS_BUS;
> -
> + hc->unplug = virtio_ccw_busdev_unplug;
Now, this callback is supposed to be invoked instead. However, the
unplugging code invokes the callback for the _parent bus_, which
means...
> }
>
> static const TypeInfo virtio_ccw_device_info = {
> static void virtual_css_bridge_class_init(ObjectClass *klass, void *data)
> {
> SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass);
> + HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
>
> k->init = virtual_css_bridge_init;
> + hc->unplug = qdev_simple_device_unplug_cb;
...we're invoking this one, as the parent bus for virtio-ccw devices is
the virtual-css bus.
If I change this callback to the virtio-ccw one, everything works as
expected.
> }
So, to summarize, what happened before was
bridge device <--- (simple unplug invoked for dev)
-> virtual bus
-> virtio proxy device <--- virtio unplug invoked for dev
-> virtio bus
-> virtio device
which your patch changed to
bridge device
-> virtual bus <--- simple unplug invoked for virtio proxy dev
-> virtio proxy device
-> virtio bus <--- (virtio unplug invoked for virtio dev)
-> virtio device
Am I understanding this correctly?
- [Qemu-devel] [PATCH 15/30] virtio-pci: replace BusState.allow_hotplug with hotplug_handler, (continued)
- [Qemu-devel] [PATCH 17/30] virtio-mmio: drop useless bus->allow_hotplug = 0, Igor Mammedov, 2014/09/24
- [Qemu-devel] [PATCH 18/30] s390x: drop not used allow_hotplug in event-facility, Igor Mammedov, 2014/09/24
- [Qemu-devel] [PATCH 19/30] s390x: convert s390-virtio to hotplug handler API, Igor Mammedov, 2014/09/24
- [Qemu-devel] [PATCH 20/30] s390x: convert virtio-ccw to hotplug handler API, Igor Mammedov, 2014/09/24
- Re: [Qemu-devel] [PATCH 20/30] s390x: convert virtio-ccw to hotplug handler API,
Cornelia Huck <=
[Qemu-devel] [PATCH 21/30] scsi: make scsi_bus_new() assign hotplug controller, Igor Mammedov, 2014/09/24
[Qemu-devel] [PATCH 22/30] scsi: convert pvscsi HBA to hotplug hander API, Igor Mammedov, 2014/09/24
[Qemu-devel] [PATCH 23/30] scsi: convert virtio-scsi HBA to hotplug handler API, Igor Mammedov, 2014/09/24