* [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
* [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 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 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 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
* 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.