qemu-s390x
[Top][All Lists]
Advanced

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

Re: [qemu-s390x] [PATCH] s390x/vfio-ap: Implement hot plug/unplug of vfi


From: David Hildenbrand
Subject: Re: [qemu-s390x] [PATCH] s390x/vfio-ap: Implement hot plug/unplug of vfio-ap device
Date: Tue, 8 Jan 2019 17:09:26 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1

On 08.01.19 17:01, Tony Krowiak wrote:
> Introduces hot plug/unplug support for the vfio-ap device. Note that only one
> vfio-ap device can be attached to the ap-bus, so a vfio-ap device can only be
> hot plugged if the '-device vfio-ap,sysfsdev=$path_to_mdev' option is not
> specified on the QEMU command line.
> 
> Signed-off-by: Tony Krowiak <address@hidden>
> Reviewed-by: Pierre Morel<address@hidden>
> Tested-by: Pierre Morel<address@hidden>
> ---
>  hw/s390x/ap-bridge.c | 12 +++++++++++-
>  hw/vfio/ap.c         |  2 +-
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/s390x/ap-bridge.c b/hw/s390x/ap-bridge.c
> index 3795d30dd7c9..25a03412fcb9 100644
> --- a/hw/s390x/ap-bridge.c
> +++ b/hw/s390x/ap-bridge.c
> @@ -39,6 +39,7 @@ static const TypeInfo ap_bus_info = {
>  void s390_init_ap(void)
>  {
>      DeviceState *dev;
> +    BusState *bus;
>  
>      /* If no AP instructions then no need for AP bridge */
>      if (!s390_has_feat(S390_FEAT_AP)) {
> @@ -52,13 +53,18 @@ void s390_init_ap(void)
>      qdev_init_nofail(dev);
>  
>      /* Create bus on bridge device */
> -    qbus_create(TYPE_AP_BUS, dev, TYPE_AP_BUS);
> +    bus = qbus_create(TYPE_AP_BUS, dev, TYPE_AP_BUS);
> +
> +    /* Enable hotplugging */
> +    qbus_set_hotplug_handler(bus, dev, &error_abort);
>   }
>  
>  static void ap_bridge_class_init(ObjectClass *oc, void *data)
>  {
>      DeviceClass *dc = DEVICE_CLASS(oc);
> +    HotplugHandlerClass *hc = HOTPLUG_HANDLER_CLASS(oc);
>  
> +    hc->unplug = qdev_simple_device_unplug_cb;

confused, why is there no plug action?

>      set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
>  }
>  
> @@ -67,6 +73,10 @@ static const TypeInfo ap_bridge_info = {
>      .parent        = TYPE_SYS_BUS_DEVICE,
>      .instance_size = 0,
>      .class_init    = ap_bridge_class_init,
> +    .interfaces = (InterfaceInfo[]) {
> +        { TYPE_HOTPLUG_HANDLER },
> +        { }
> +    }
>  };
>  
>  static void ap_register(void)
> diff --git a/hw/vfio/ap.c b/hw/vfio/ap.c
> index 6166ccd47a4a..d8b79ebe53ae 100644
> --- a/hw/vfio/ap.c
> +++ b/hw/vfio/ap.c
> @@ -169,7 +169,7 @@ static void vfio_ap_class_init(ObjectClass *klass, void 
> *data)
>      set_bit(DEVICE_CATEGORY_MISC, dc->categories);
>      dc->realize = vfio_ap_realize;
>      dc->unrealize = vfio_ap_unrealize;
> -    dc->hotpluggable = false;
> +    dc->hotpluggable = true;
>      dc->reset = vfio_ap_reset;
>      dc->bus_type = TYPE_AP_BUS;
>  }
> 


-- 

Thanks,

David / dhildenb



reply via email to

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