qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 22/30] scsi: convert pvscsi HBA to hotplug hande


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 22/30] scsi: convert pvscsi HBA to hotplug hander API
Date: Wed, 24 Sep 2014 14:13:03 +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>
> ---
> not tested since it's broken, i.e. QEMU hangs in BIOS
> with pvscsi device present on CLI
> ---
>  hw/scsi/vmw_pvscsi.c | 24 ++++++++++++++++--------
>  1 file changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c
> index 5734d19..10586c4 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
> @@ -1187,6 +1188,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 +1201,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 +1210,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
> 

Reviewed-by: Paolo Bonzini <address@hidden>



reply via email to

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