qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v1 2/2] virtio-gpu-ccw: Create a virtio gpu devi


From: David Hildenbrand
Subject: Re: [Qemu-devel] [PATCH v1 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus
Date: Wed, 13 Sep 2017 14:09:15 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

On 12.09.2017 16:26, Farhan Ali wrote:
> Wire up the virtio-gpu device for the CCW bus. The virtio-gpu
> is a virtio-1 device, so disable revision 0.
> 
> Signed-off-by: Farhan Ali <address@hidden>
> Acked-by: Christian Borntraeger <address@hidden>
> ---
>  hw/s390x/virtio-ccw.c | 54 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  hw/s390x/virtio-ccw.h | 10 ++++++++++
>  2 files changed, 64 insertions(+)
> 
> diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c
> index b1976fd..3078bf0 100644
> --- a/hw/s390x/virtio-ccw.c
> +++ b/hw/s390x/virtio-ccw.c
> @@ -1007,6 +1007,20 @@ static void virtio_ccw_crypto_realize(VirtioCcwDevice 
> *ccw_dev, Error **errp)
>                               NULL);
>  }
>  
> +static void virtio_ccw_gpu_realize(VirtioCcwDevice *ccw_dev, Error **errp)
> +{
> +    VirtIOGPUCcw *dev = VIRTIO_GPU_CCW(ccw_dev);
> +    DeviceState *vdev = DEVICE(&dev->vdev);
> +    Error *err = NULL;
> +
> +    qdev_set_parent_bus(vdev, BUS(&ccw_dev->bus));
> +    object_property_set_bool(OBJECT(vdev), true, "realized", &err);
> +    if (err) {
> +        error_propagate(errp, err);
> +        return;
> +    }

You can call error_propagate() unconditionally, it can deal with !err.

> +}
> +
>  /* DeviceState to VirtioCcwDevice. Note: used on datapath,
>   * be careful and test performance if you change this.
>   */
> @@ -1616,6 +1630,45 @@ static const TypeInfo virtio_ccw_crypto = {
>      .class_init    = virtio_ccw_crypto_class_init,
>  };
>  
> +static Property virtio_ccw_gpu_properties[] = {
> +    DEFINE_PROP_BIT("ioeventfd", VirtioCcwDevice, flags,
> +                    VIRTIO_CCW_FLAG_USE_IOEVENTFD_BIT, true),
> +    DEFINE_PROP_UINT32("max_revision", VirtioCcwDevice, max_rev,
> +                       VIRTIO_CCW_MAX_REV),
> +    DEFINE_PROP_END_OF_LIST(),
> +};
> +
> +static void virtio_ccw_gpu_instance_init(Object *obj)
> +{
> +    VirtIOGPUCcw *dev = VIRTIO_GPU_CCW(obj);
> +    VirtioCcwDevice *ccw_dev = VIRTIO_CCW_DEVICE(obj);
> +
> +    ccw_dev->force_revision_1 = true;
> +    virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev),
> +                                TYPE_VIRTIO_GPU);
> +}
> +
> +static void virtio_ccw_gpu_class_init(ObjectClass *klass, void *data)
> +{
> +    DeviceClass *dc = DEVICE_CLASS(klass);
> +    VirtIOCCWDeviceClass *k = VIRTIO_CCW_DEVICE_CLASS(klass);
> +
> +    k->realize = virtio_ccw_gpu_realize;
> +    k->exit = virtio_ccw_exit;
> +    dc->reset = virtio_ccw_reset;
> +    dc->props = virtio_ccw_gpu_properties;
> +    dc->hotpluggable = false;

Wonder if hotplug could work?


-- 

Thanks,

David



reply via email to

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