qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 16/30] virtio-serial: convert to hotplug-handler


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 16/30] virtio-serial: convert to hotplug-handler API
Date: Wed, 24 Sep 2014 14:24:05 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Il 24/09/2014 13:48, Igor Mammedov ha scritto:
> Signed-off-by: Igor Mammedov <address@hidden>
> ---
>  hw/char/virtio-serial-bus.c | 20 +++++++++++++++-----
>  1 file changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/char/virtio-serial-bus.c b/hw/char/virtio-serial-bus.c
> index 3931085..c6870f1 100644
> --- a/hw/char/virtio-serial-bus.c
> +++ b/hw/char/virtio-serial-bus.c
> @@ -904,6 +904,12 @@ static void virtser_port_device_realize(DeviceState 
> *dev, Error **errp)
>      }
>  
>      port->elem.out_num = 0;
> +}
> +
> +static void virtser_port_device_plug(HotplugHandler *hotplug_dev,
> +                                     DeviceState *dev, Error **errp)
> +{
> +    VirtIOSerialPort *port = VIRTIO_SERIAL_PORT(dev);
>  
>      QTAILQ_INSERT_TAIL(&port->vser->ports, port, next);
>      port->ivq = port->vser->ivqs[port->id];
> @@ -912,7 +918,7 @@ static void virtser_port_device_realize(DeviceState *dev, 
> Error **errp)
>      add_port(port->vser, port->id);
>  
>      /* Send an update to the guest about this new port added */
> -    virtio_notify_config(vdev);
> +    virtio_notify_config(VIRTIO_DEVICE(hotplug_dev));
>  }
>  
>  static void virtser_port_device_unrealize(DeviceState *dev, Error **errp)
> @@ -935,7 +941,6 @@ static void virtio_serial_device_realize(DeviceState 
> *dev, Error **errp)
>  {
>      VirtIODevice *vdev = VIRTIO_DEVICE(dev);
>      VirtIOSerial *vser = VIRTIO_SERIAL(dev);
> -    BusState *bus;
>      uint32_t i, max_supported_ports;
>  
>      if (!vser->serial.max_virtserial_ports) {
> @@ -957,8 +962,7 @@ static void virtio_serial_device_realize(DeviceState 
> *dev, Error **errp)
>      /* Spawn a new virtio-serial bus on which the ports will ride as devices 
> */
>      qbus_create_inplace(&vser->bus, sizeof(vser->bus), 
> TYPE_VIRTIO_SERIAL_BUS,
>                          dev, vdev->bus_name);
> -    bus = BUS(&vser->bus);
> -    bus->allow_hotplug = 1;
> +    qbus_set_hotplug_handler(BUS(&vser->bus), DEVICE(vser), errp);
>      vser->bus.vser = vser;
>      QTAILQ_INIT(&vser->ports);
>  
> @@ -1021,7 +1025,6 @@ static void virtio_serial_port_class_init(ObjectClass 
> *klass, void *data)
>      k->bus_type = TYPE_VIRTIO_SERIAL_BUS;
>      k->realize = virtser_port_device_realize;
>      k->unrealize = virtser_port_device_unrealize;
> -    k->unplug = qdev_simple_unplug_cb;
>      k->props = virtser_props;
>  }
>  
> @@ -1064,6 +1067,7 @@ static void virtio_serial_class_init(ObjectClass 
> *klass, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(klass);
>      VirtioDeviceClass *vdc = VIRTIO_DEVICE_CLASS(klass);
> +    HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(klass);
>  
>      QLIST_INIT(&vserdevices.devices);
>  
> @@ -1077,6 +1081,8 @@ static void virtio_serial_class_init(ObjectClass 
> *klass, void *data)
>      vdc->reset = vser_reset;
>      vdc->save = virtio_serial_save_device;
>      vdc->load = virtio_serial_load_device;
> +    hc->plug = virtser_port_device_plug;
> +    hc->unplug = qdev_simple_device_unplug_cb;
>  }
>  
>  static const TypeInfo virtio_device_info = {
> @@ -1084,6 +1090,10 @@ static const TypeInfo virtio_device_info = {
>      .parent = TYPE_VIRTIO_DEVICE,
>      .instance_size = sizeof(VirtIOSerial),
>      .class_init = virtio_serial_class_init,
> +    .interfaces = (InterfaceInfo[]) {
> +        { TYPE_HOTPLUG_HANDLER },
> +        { }
> +    }
>  };
>  
>  static void virtio_serial_register_types(void)
> 

Reviewed-by: Paolo Bonzini <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]