* [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390
@ 2017-09-15 14:40 Farhan Ali
2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion Farhan Ali
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Farhan Ali @ 2017-09-15 14:40 UTC (permalink / raw)
To: qemu-devel; +Cc: kraxel, cohuck, borntraeger, thuth, pasic
These patches wire up the virtio-gpu device for CCW bus for
S390.
For the S390 architecture which does not natively support any graphics
device, virtio gpu in 2D mode could be used to emulate a simple graphics
card and use VNC as the display.
eg: qemu-system-s390x ... -device virtio-gpu-ccw,devno=fe.0.0101
-vnc host_ip_addr:5900
Note, to actually see any display content the
guest kernel needs to support DRM layer, Virtio GPU driver,
the Virtual Terminal layer etc.
I would appreciate any feedback on these patches, specially the
first patch.
ChangeLog
--------
v1 -> v2
- remove error_propagate (patch 2)
- Add byteswap functions (patch 1)
- Handle endian conversion for virtio_gpu_ctrl_response (patch 1)
v2 -> v3
- updated patch 1 based on Gerd's feedback
- rename bswap functions (patch 1)
- use in-place swapping functions (patch 1)
- Handle endian conversion for cursor update (patch 1)
Thank you
Farhan
Farhan Ali (2):
virtio-gpu: Handle endian conversion
virtio-gpu-ccw: Create a virtio gpu device for the ccw bus
hw/display/virtio-gpu.c | 70 +++++++++++++++++++++++++++++++++++++++++++------
hw/s390x/virtio-ccw.c | 49 ++++++++++++++++++++++++++++++++++
hw/s390x/virtio-ccw.h | 10 +++++++
3 files changed, 121 insertions(+), 8 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 9+ messages in thread* [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion 2017-09-15 14:40 [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Farhan Ali @ 2017-09-15 14:40 ` Farhan Ali 2017-09-18 10:32 ` Gerd Hoffmann 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus Farhan Ali 2017-09-18 12:29 ` [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Cornelia Huck 2 siblings, 1 reply; 9+ messages in thread From: Farhan Ali @ 2017-09-15 14:40 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, cohuck, borntraeger, thuth, pasic Virtio GPU code currently only supports litte endian format, and so using the Virtio GPU device on a big endian machine does not work. Let's fix it by supporting the correct host cpu byte order. Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> --- hw/display/virtio-gpu.c | 70 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 8 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 6aae147..0ef7e5c 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -30,6 +30,48 @@ virtio_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id); static void virtio_gpu_cleanup_mapping(struct virtio_gpu_simple_resource *res); +static void +virtio_gpu_ctrl_hdr_bswap(struct virtio_gpu_ctrl_hdr *hdr) +{ + le32_to_cpus(&hdr->type); + le32_to_cpus(&hdr->flags); + le64_to_cpus(&hdr->fence_id); + le32_to_cpus(&hdr->ctx_id); + le32_to_cpus(&hdr->padding); +} + +static void virtio_gpu_bswap_32(void *ptr, + size_t size) +{ +#ifdef HOST_WORDS_BIGENDIAN + + size_t i; + struct virtio_gpu_ctrl_hdr *hdr = (struct virtio_gpu_ctrl_hdr *) ptr; + + virtio_gpu_ctrl_hdr_bswap(hdr); + + i = sizeof(struct virtio_gpu_ctrl_hdr); + while (i < size) { + le32_to_cpus((uint32_t *)(ptr + i)); + i = i + sizeof(uint32_t); + } + +#endif +} + +static void +virtio_gpu_t2d_bswap(struct virtio_gpu_transfer_to_host_2d *t2d) +{ + virtio_gpu_ctrl_hdr_bswap(&t2d->hdr); + le32_to_cpus(&t2d->r.x); + le32_to_cpus(&t2d->r.y); + le32_to_cpus(&t2d->r.width); + le32_to_cpus(&t2d->r.height); + le64_to_cpus(&t2d->offset); + le32_to_cpus(&t2d->resource_id); + le32_to_cpus(&t2d->padding); +} + #ifdef CONFIG_VIRGL #include <virglrenderer.h> #define VIRGL(_g, _virgl, _simple, ...) \ @@ -205,6 +247,7 @@ void virtio_gpu_ctrl_response(VirtIOGPU *g, resp->fence_id = cmd->cmd_hdr.fence_id; resp->ctx_id = cmd->cmd_hdr.ctx_id; } + virtio_gpu_ctrl_hdr_bswap(resp); s = iov_from_buf(cmd->elem.in_sg, cmd->elem.in_num, 0, resp, resp_len); if (s != resp_len) { qemu_log_mask(LOG_GUEST_ERROR, @@ -236,8 +279,8 @@ virtio_gpu_fill_display_info(VirtIOGPU *g, for (i = 0; i < g->conf.max_outputs; i++) { if (g->enabled_output_bitmask & (1 << i)) { dpy_info->pmodes[i].enabled = 1; - dpy_info->pmodes[i].r.width = g->req_state[i].width; - dpy_info->pmodes[i].r.height = g->req_state[i].height; + dpy_info->pmodes[i].r.width = cpu_to_le32(g->req_state[i].width); + dpy_info->pmodes[i].r.height = cpu_to_le32(g->req_state[i].height); } } } @@ -287,6 +330,7 @@ static void virtio_gpu_resource_create_2d(VirtIOGPU *g, struct virtio_gpu_resource_create_2d c2d; VIRTIO_GPU_FILL_CMD(c2d); + virtio_gpu_bswap_32(&c2d, sizeof(c2d)); trace_virtio_gpu_cmd_res_create_2d(c2d.resource_id, c2d.format, c2d.width, c2d.height); @@ -360,6 +404,7 @@ static void virtio_gpu_resource_unref(VirtIOGPU *g, struct virtio_gpu_resource_unref unref; VIRTIO_GPU_FILL_CMD(unref); + virtio_gpu_bswap_32(&unref, sizeof(unref)); trace_virtio_gpu_cmd_res_unref(unref.resource_id); res = virtio_gpu_find_resource(g, unref.resource_id); @@ -383,6 +428,7 @@ static void virtio_gpu_transfer_to_host_2d(VirtIOGPU *g, struct virtio_gpu_transfer_to_host_2d t2d; VIRTIO_GPU_FILL_CMD(t2d); + virtio_gpu_t2d_bswap(&t2d); trace_virtio_gpu_cmd_res_xfer_toh_2d(t2d.resource_id); res = virtio_gpu_find_resource(g, t2d.resource_id); @@ -439,6 +485,7 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g, int i; VIRTIO_GPU_FILL_CMD(rf); + virtio_gpu_bswap_32(&rf, sizeof(rf)); trace_virtio_gpu_cmd_res_flush(rf.resource_id, rf.r.width, rf.r.height, rf.r.x, rf.r.y); @@ -511,6 +558,7 @@ static void virtio_gpu_set_scanout(VirtIOGPU *g, struct virtio_gpu_set_scanout ss; VIRTIO_GPU_FILL_CMD(ss); + virtio_gpu_bswap_32(&ss, sizeof(ss)); trace_virtio_gpu_cmd_set_scanout(ss.scanout_id, ss.resource_id, ss.r.width, ss.r.height, ss.r.x, ss.r.y); @@ -633,13 +681,15 @@ int virtio_gpu_create_mapping_iov(struct virtio_gpu_resource_attach_backing *ab, *addr = g_malloc0(sizeof(uint64_t) * ab->nr_entries); } for (i = 0; i < ab->nr_entries; i++) { - hwaddr len = ents[i].length; - (*iov)[i].iov_len = ents[i].length; - (*iov)[i].iov_base = cpu_physical_memory_map(ents[i].addr, &len, 1); + uint64_t a = le64_to_cpu(ents[i].addr); + uint32_t l = le32_to_cpu(ents[i].length); + hwaddr len = l; + (*iov)[i].iov_len = l; + (*iov)[i].iov_base = cpu_physical_memory_map(a, &len, 1); if (addr) { - (*addr)[i] = ents[i].addr; + (*addr)[i] = a; } - if (!(*iov)[i].iov_base || len != ents[i].length) { + if (!(*iov)[i].iov_base || len != l) { qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to map MMIO memory for" " resource %d element %d\n", __func__, ab->resource_id, i); @@ -686,6 +736,7 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g, int ret; VIRTIO_GPU_FILL_CMD(ab); + virtio_gpu_bswap_32(&ab, sizeof(ab)); trace_virtio_gpu_cmd_res_back_attach(ab.resource_id); res = virtio_gpu_find_resource(g, ab.resource_id); @@ -718,6 +769,7 @@ virtio_gpu_resource_detach_backing(VirtIOGPU *g, struct virtio_gpu_resource_detach_backing detach; VIRTIO_GPU_FILL_CMD(detach); + virtio_gpu_bswap_32(&detach, sizeof(detach)); trace_virtio_gpu_cmd_res_back_detach(detach.resource_id); res = virtio_gpu_find_resource(g, detach.resource_id); @@ -734,6 +786,7 @@ static void virtio_gpu_simple_process_cmd(VirtIOGPU *g, struct virtio_gpu_ctrl_command *cmd) { VIRTIO_GPU_FILL_CMD(cmd->cmd_hdr); + virtio_gpu_ctrl_hdr_bswap(&cmd->cmd_hdr); switch (cmd->cmd_hdr.type) { case VIRTIO_GPU_CMD_GET_DISPLAY_INFO: @@ -879,6 +932,7 @@ static void virtio_gpu_handle_cursor(VirtIODevice *vdev, VirtQueue *vq) "%s: cursor size incorrect %zu vs %zu\n", __func__, s, sizeof(cursor_info)); } else { + virtio_gpu_bswap_32(&cursor_info, sizeof(cursor_info)); update_cursor(g, &cursor_info); } virtqueue_push(vq, elem, 0); @@ -1135,7 +1189,7 @@ static void virtio_gpu_device_realize(DeviceState *qdev, Error **errp) } g->config_size = sizeof(struct virtio_gpu_config); - g->virtio_config.num_scanouts = g->conf.max_outputs; + g->virtio_config.num_scanouts = cpu_to_le32(g->conf.max_outputs); virtio_init(VIRTIO_DEVICE(g), "virtio-gpu", VIRTIO_ID_GPU, g->config_size); -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion Farhan Ali @ 2017-09-18 10:32 ` Gerd Hoffmann 2017-09-18 12:39 ` Farhan Ali 0 siblings, 1 reply; 9+ messages in thread From: Gerd Hoffmann @ 2017-09-18 10:32 UTC (permalink / raw) To: Farhan Ali, qemu-devel; +Cc: cohuck, borntraeger, thuth, pasic On Fri, 2017-09-15 at 10:40 -0400, Farhan Ali wrote: > Virtio GPU code currently only supports litte endian format, > and so using the Virtio GPU device on a big endian machine > does not work. > > Let's fix it by supporting the correct host cpu byte order. > > Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> cheers, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion 2017-09-18 10:32 ` Gerd Hoffmann @ 2017-09-18 12:39 ` Farhan Ali 0 siblings, 0 replies; 9+ messages in thread From: Farhan Ali @ 2017-09-18 12:39 UTC (permalink / raw) To: Gerd Hoffmann, qemu-devel; +Cc: borntraeger, thuth, cohuck, pasic On 09/18/2017 06:32 AM, Gerd Hoffmann wrote: > On Fri, 2017-09-15 at 10:40 -0400, Farhan Ali wrote: >> Virtio GPU code currently only supports litte endian format, >> and so using the Virtio GPU device on a big endian machine >> does not work. >> >> Let's fix it by supporting the correct host cpu byte order. >> >> Signed-off-by: Farhan Ali <alifm@linux.vnet.ibm.com> > > Reviewed-by: Gerd Hoffmann <kraxel@redhat.com> > > cheers, > Gerd > > Thanks for reviewing it :) ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus 2017-09-15 14:40 [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Farhan Ali 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion Farhan Ali @ 2017-09-15 14:40 ` Farhan Ali 2017-09-18 10:05 ` Cornelia Huck 2017-09-18 12:29 ` [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Cornelia Huck 2 siblings, 1 reply; 9+ messages in thread From: Farhan Ali @ 2017-09-15 14:40 UTC (permalink / raw) To: qemu-devel; +Cc: kraxel, cohuck, borntraeger, thuth, pasic 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 <alifm@linux.vnet.ibm.com> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Reviewed-by: Halil Pasic <pasic@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> --- hw/s390x/virtio-ccw.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ hw/s390x/virtio-ccw.h | 10 ++++++++++ 2 files changed, 59 insertions(+) diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c index b1976fd..12cacf6 100644 --- a/hw/s390x/virtio-ccw.c +++ b/hw/s390x/virtio-ccw.c @@ -1007,6 +1007,15 @@ 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); + + qdev_set_parent_bus(vdev, BUS(&ccw_dev->bus)); + object_property_set_bool(OBJECT(vdev), true, "realized", errp); +} + /* DeviceState to VirtioCcwDevice. Note: used on datapath, * be careful and test performance if you change this. */ @@ -1616,6 +1625,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; + set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); +} + +static const TypeInfo virtio_ccw_gpu = { + .name = TYPE_VIRTIO_GPU_CCW, + .parent = TYPE_VIRTIO_CCW_DEVICE, + .instance_size = sizeof(VirtIOGPUCcw), + .instance_init = virtio_ccw_gpu_instance_init, + .class_init = virtio_ccw_gpu_class_init, +}; + static void virtio_ccw_busdev_realize(DeviceState *dev, Error **errp) { VirtioCcwDevice *_dev = (VirtioCcwDevice *)dev; @@ -1815,6 +1863,7 @@ static void virtio_ccw_register(void) type_register_static(&vhost_vsock_ccw_info); #endif type_register_static(&virtio_ccw_crypto); + type_register_static(&virtio_ccw_gpu); } type_init(virtio_ccw_register) diff --git a/hw/s390x/virtio-ccw.h b/hw/s390x/virtio-ccw.h index 41d4010..541fdd2 100644 --- a/hw/s390x/virtio-ccw.h +++ b/hw/s390x/virtio-ccw.h @@ -27,6 +27,7 @@ #ifdef CONFIG_VHOST_VSOCK #include "hw/virtio/vhost-vsock.h" #endif /* CONFIG_VHOST_VSOCK */ +#include "hw/virtio/virtio-gpu.h" #include "hw/s390x/s390_flic.h" #include "hw/s390x/css.h" @@ -223,4 +224,13 @@ typedef struct VHostVSockCCWState { #endif /* CONFIG_VHOST_VSOCK */ +#define TYPE_VIRTIO_GPU_CCW "virtio-gpu-ccw" +#define VIRTIO_GPU_CCW(obj) \ + OBJECT_CHECK(VirtIOGPUCcw, (obj), TYPE_VIRTIO_GPU_CCW) + +typedef struct VirtIOGPUCcw { + VirtioCcwDevice parent_obj; + VirtIOGPU vdev; +} VirtIOGPUCcw; + #endif -- 1.9.1 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus Farhan Ali @ 2017-09-18 10:05 ` Cornelia Huck 2017-09-18 10:33 ` Gerd Hoffmann 0 siblings, 1 reply; 9+ messages in thread From: Cornelia Huck @ 2017-09-18 10:05 UTC (permalink / raw) To: Farhan Ali, kraxel; +Cc: qemu-devel, borntraeger, thuth, pasic On Fri, 15 Sep 2017 10:40:32 -0400 Farhan Ali <alifm@linux.vnet.ibm.com> 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 <alifm@linux.vnet.ibm.com> > Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> > Reviewed-by: Halil Pasic <pasic@linux.vnet.ibm.com> > Reviewed-by: Thomas Huth <thuth@redhat.com> > --- > hw/s390x/virtio-ccw.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ > hw/s390x/virtio-ccw.h | 10 ++++++++++ > 2 files changed, 59 insertions(+) > > diff --git a/hw/s390x/virtio-ccw.c b/hw/s390x/virtio-ccw.c > index b1976fd..12cacf6 100644 > --- a/hw/s390x/virtio-ccw.c > +++ b/hw/s390x/virtio-ccw.c > @@ -1815,6 +1863,7 @@ static void virtio_ccw_register(void) > type_register_static(&vhost_vsock_ccw_info); > #endif > type_register_static(&virtio_ccw_crypto); > + type_register_static(&virtio_ccw_gpu); Not a critique of this patch, just an observation: For virtio-ccw, we tend to collect the various virtio devices all in the same file. For virtio-pci, they sometimes get separate files. Not sure which is better, but it means that sometimes only the virtio-pci version is added... > } > > type_init(virtio_ccw_register) The patch looks good to me. Gerd, if the first patch looks good to you, I can take both patches through the s390 tree. If you prefer to merge the patches yourself, that's fine with me as well. Reviewed-by: Cornelia Huck <cohuck@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus 2017-09-18 10:05 ` Cornelia Huck @ 2017-09-18 10:33 ` Gerd Hoffmann 0 siblings, 0 replies; 9+ messages in thread From: Gerd Hoffmann @ 2017-09-18 10:33 UTC (permalink / raw) To: Cornelia Huck, Farhan Ali; +Cc: qemu-devel, borntraeger, thuth, pasic Hi, > Gerd, if the first patch looks good to you, I can take both patches > through the s390 tree. Yes, please. Just sent a reviewed-by for patch #1. thanks, Gerd ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 2017-09-15 14:40 [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Farhan Ali 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion Farhan Ali 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus Farhan Ali @ 2017-09-18 12:29 ` Cornelia Huck 2017-09-18 12:43 ` Farhan Ali 2 siblings, 1 reply; 9+ messages in thread From: Cornelia Huck @ 2017-09-18 12:29 UTC (permalink / raw) To: Farhan Ali; +Cc: qemu-devel, kraxel, borntraeger, thuth, pasic On Fri, 15 Sep 2017 10:40:30 -0400 Farhan Ali <alifm@linux.vnet.ibm.com> wrote: > These patches wire up the virtio-gpu device for CCW bus for > S390. > > For the S390 architecture which does not natively support any graphics > device, virtio gpu in 2D mode could be used to emulate a simple graphics > card and use VNC as the display. > > eg: qemu-system-s390x ... -device virtio-gpu-ccw,devno=fe.0.0101 > -vnc host_ip_addr:5900 > > Note, to actually see any display content the > guest kernel needs to support DRM layer, Virtio GPU driver, > the Virtual Terminal layer etc. > > I would appreciate any feedback on these patches, specially the > first patch. > > ChangeLog > -------- > v1 -> v2 > - remove error_propagate (patch 2) > - Add byteswap functions (patch 1) > - Handle endian conversion for virtio_gpu_ctrl_response (patch 1) > > v2 -> v3 > - updated patch 1 based on Gerd's feedback > - rename bswap functions (patch 1) > - use in-place swapping functions (patch 1) > - Handle endian conversion for cursor update (patch 1) > > Thank you > Farhan > > > Farhan Ali (2): > virtio-gpu: Handle endian conversion > virtio-gpu-ccw: Create a virtio gpu device for the ccw bus > > hw/display/virtio-gpu.c | 70 +++++++++++++++++++++++++++++++++++++++++++------ > hw/s390x/virtio-ccw.c | 49 ++++++++++++++++++++++++++++++++++ > hw/s390x/virtio-ccw.h | 10 +++++++ > 3 files changed, 121 insertions(+), 8 deletions(-) > Thanks, applied. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 2017-09-18 12:29 ` [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Cornelia Huck @ 2017-09-18 12:43 ` Farhan Ali 0 siblings, 0 replies; 9+ messages in thread From: Farhan Ali @ 2017-09-18 12:43 UTC (permalink / raw) To: Cornelia Huck; +Cc: borntraeger, thuth, pasic, qemu-devel, kraxel On 09/18/2017 08:29 AM, Cornelia Huck wrote: > On Fri, 15 Sep 2017 10:40:30 -0400 > Farhan Ali <alifm@linux.vnet.ibm.com> wrote: > >> These patches wire up the virtio-gpu device for CCW bus for >> S390. >> >> For the S390 architecture which does not natively support any graphics >> device, virtio gpu in 2D mode could be used to emulate a simple graphics >> card and use VNC as the display. >> >> eg: qemu-system-s390x ... -device virtio-gpu-ccw,devno=fe.0.0101 >> -vnc host_ip_addr:5900 >> >> Note, to actually see any display content the >> guest kernel needs to support DRM layer, Virtio GPU driver, >> the Virtual Terminal layer etc. >> >> I would appreciate any feedback on these patches, specially the >> first patch. >> >> ChangeLog >> -------- >> v1 -> v2 >> - remove error_propagate (patch 2) >> - Add byteswap functions (patch 1) >> - Handle endian conversion for virtio_gpu_ctrl_response (patch 1) >> >> v2 -> v3 >> - updated patch 1 based on Gerd's feedback >> - rename bswap functions (patch 1) >> - use in-place swapping functions (patch 1) >> - Handle endian conversion for cursor update (patch 1) >> >> Thank you >> Farhan >> >> >> Farhan Ali (2): >> virtio-gpu: Handle endian conversion >> virtio-gpu-ccw: Create a virtio gpu device for the ccw bus >> >> hw/display/virtio-gpu.c | 70 +++++++++++++++++++++++++++++++++++++++++++------ >> hw/s390x/virtio-ccw.c | 49 ++++++++++++++++++++++++++++++++++ >> hw/s390x/virtio-ccw.h | 10 +++++++ >> 3 files changed, 121 insertions(+), 8 deletions(-) >> > > Thanks, applied. > Thanks ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-09-18 12:43 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-09-15 14:40 [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Farhan Ali 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 1/2] virtio-gpu: Handle endian conversion Farhan Ali 2017-09-18 10:32 ` Gerd Hoffmann 2017-09-18 12:39 ` Farhan Ali 2017-09-15 14:40 ` [Qemu-devel] [PATCH v3 2/2] virtio-gpu-ccw: Create a virtio gpu device for the ccw bus Farhan Ali 2017-09-18 10:05 ` Cornelia Huck 2017-09-18 10:33 ` Gerd Hoffmann 2017-09-18 12:29 ` [Qemu-devel] [PATCH v3 0/2] Virtio GPU for S390 Cornelia Huck 2017-09-18 12:43 ` Farhan Ali
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).