[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