qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 1/1] spapr_vscsi: do not allow device hotplug


From: Philippe Mathieu-Daudé
Subject: Re: [PATCH 1/1] spapr_vscsi: do not allow device hotplug
Date: Fri, 21 Aug 2020 13:08:24 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0

Cc'ing Markus

On 8/20/20 9:06 PM, Daniel Henrique Barboza wrote:
> We do not implement hotplug in the vscsi bus, but we forgot to
> tell qdev about it. The result is that users are able to hotplug
> devices in the vscsi bus, the devices appear in qdev, but they
> aren't usable by the guest OS unless the user reboots it first.
> 
> Setting qbus hotplug_handler to NULL will tell qdev-monitor, via
> qbus_is_hotpluggable(), that we do not support hotplug operations
> in spapr_vscsi.
> 
> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1862059
> 
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
>  hw/scsi/spapr_vscsi.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/hw/scsi/spapr_vscsi.c b/hw/scsi/spapr_vscsi.c
> index d17dc03c73..57f0a1336f 100644
> --- a/hw/scsi/spapr_vscsi.c
> +++ b/hw/scsi/spapr_vscsi.c
> @@ -1219,6 +1219,9 @@ static void spapr_vscsi_realize(SpaprVioDevice *dev, 
> Error **errp)
>  
>      scsi_bus_new(&s->bus, sizeof(s->bus), DEVICE(dev),
>                   &vscsi_scsi_info, NULL);
> +
> +    /* ibmvscsi SCSI bus does not allow hotplug. */
> +    qbus_set_hotplug_handler(BUS(&s->bus), NULL);

Can't this be a problem later in DeviceClass::unrealize()?

I was expecting something like, overwriting the parent bus type:

-- >8 --
@@ -1271,6 +1271,7 @@ static void spapr_vscsi_class_init(ObjectClass
*klass, void *data)
     DeviceClass *dc = DEVICE_CLASS(klass);
     SpaprVioDeviceClass *k = VIO_SPAPR_DEVICE_CLASS(klass);

+    k->bus_type = NULL; /* ibmvscsi SCSI bus does not allow hotplug. */
     k->realize = spapr_vscsi_realize;
     k->reset = spapr_vscsi_reset;
     k->devnode = spapr_vscsi_devnode;
---

>  }
>  
>  void spapr_vscsi_create(SpaprVioBus *bus)
> 




reply via email to

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