hw/vfio/common.c | 78 +++++++++++ hw/vfio/display.c | 249 +++++++++++++++++++++++++++++----- include/hw/vfio/vfio-common.h | 11 ++ include/ui/console.h | 2 + ui/console.c | 35 +++++ 5 files changed, 343 insertions(+), 32 deletions(-)
This series shows the idea to refresh UI console depending on vGPU page flip events. Tina Zhang (3): vfio: Add a funtion to return a specific irq capabilities ui/console: Introduce two new APIs vfio/display: Refresh display depending on vGPU page flip events hw/vfio/common.c | 78 +++++++++++ hw/vfio/display.c | 249 +++++++++++++++++++++++++++++----- include/hw/vfio/vfio-common.h | 11 ++ include/ui/console.h | 2 + ui/console.c | 35 +++++ 5 files changed, 343 insertions(+), 32 deletions(-) -- 2.17.1
Patchew URL: https://patchew.org/QEMU/20190604095847.10532-1-tina.zhang@intel.com/
Hi,
This series failed build test on s390x host. Please find the details below.
=== TEST SCRIPT BEGIN ===
#!/bin/bash
# Testing script will be invoked under the git checkout with
# HEAD pointing to a commit that has the patches applied on top of "base"
# branch
set -e
CC=$HOME/bin/cc
INSTALL=$PWD/install
BUILD=$PWD/build
mkdir -p $BUILD $INSTALL
SRC=$PWD
cd $BUILD
$SRC/configure --cc=$CC --prefix=$INSTALL
make -j4
# XXX: we need reliable clean up
# make check -j4 V=1
make install
echo
echo "=== ENV ==="
env
echo
echo "=== PACKAGES ==="
rpm -qa
=== TEST SCRIPT END ===
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC arm-softmmu/hw/display/virtio-gpu-pci.o
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_irq_info_cap’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: error: ‘VFIO_IRQ_INFO_FLAG_CAPS’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_FLAG_CAPS’?
757 | if (!(info->flags & VFIO_IRQ_INFO_FLAG_CAPS)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_FLAG_CAPS
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: note: each undeclared identifier is reported only once for each function it appears in
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:761:26: error: ‘struct vfio_irq_info’ has no member named ‘cap_offset’
761 | for (hdr = ptr + info->cap_offset; hdr != ptr; hdr = ptr + hdr->next) {
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_dev_irq_info’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1636:44: error: ‘VFIO_IRQ_INFO_CAP_TYPE’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_CAP_TYPE’?
1636 | hdr = vfio_get_irq_info_cap(*info, VFIO_IRQ_INFO_CAP_TYPE);
| ^~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_CAP_TYPE
In file included from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:51,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:34: error: dereferencing pointer to incomplete type ‘struct vfio_irq_info_cap_type’
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
1642 | cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
| ^~~~~~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:54: error: initialization of ‘const int *’ from incompatible pointer type ‘struct vfio_info_cap_header *’ [-Werror=incompatible-pointer-types]
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/glib-compat.h:32,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:140,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:58:37: error: invalid use of undefined type ‘struct vfio_irq_info_cap_type’
58 | (type *) ((char *) __mptr - offsetof(type, member));})
| ^~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_irq_info_cap’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: error: ‘VFIO_IRQ_INFO_FLAG_CAPS’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_FLAG_CAPS’?
757 | if (!(info->flags & VFIO_IRQ_INFO_FLAG_CAPS)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_FLAG_CAPS
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: note: each undeclared identifier is reported only once for each function it appears in
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:761:26: error: ‘struct vfio_irq_info’ has no member named ‘cap_offset’
761 | for (hdr = ptr + info->cap_offset; hdr != ptr; hdr = ptr + hdr->next) {
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_dev_irq_info’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1636:44: error: ‘VFIO_IRQ_INFO_CAP_TYPE’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_CAP_TYPE’?
1636 | hdr = vfio_get_irq_info_cap(*info, VFIO_IRQ_INFO_CAP_TYPE);
| ^~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_CAP_TYPE
In file included from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:51,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:34: error: dereferencing pointer to incomplete type ‘struct vfio_irq_info_cap_type’
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
1642 | cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
| ^~~~~~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:54: error: initialization of ‘const int *’ from incompatible pointer type ‘struct vfio_info_cap_header *’ [-Werror=incompatible-pointer-types]
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/glib-compat.h:32,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:140,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:58:37: error: invalid use of undefined type ‘struct vfio_irq_info_cap_type’
58 | (type *) ((char *) __mptr - offsetof(type, member));})
| ^~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
CC aarch64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/vfio/spapr.o
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_irq_info_cap’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: error: ‘VFIO_IRQ_INFO_FLAG_CAPS’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_FLAG_CAPS’?
757 | if (!(info->flags & VFIO_IRQ_INFO_FLAG_CAPS)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_FLAG_CAPS
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: note: each undeclared identifier is reported only once for each function it appears in
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:761:26: error: ‘struct vfio_irq_info’ has no member named ‘cap_offset’
761 | for (hdr = ptr + info->cap_offset; hdr != ptr; hdr = ptr + hdr->next) {
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_dev_irq_info’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1636:44: error: ‘VFIO_IRQ_INFO_CAP_TYPE’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_CAP_TYPE’?
1636 | hdr = vfio_get_irq_info_cap(*info, VFIO_IRQ_INFO_CAP_TYPE);
| ^~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_CAP_TYPE
In file included from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:51,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:34: error: dereferencing pointer to incomplete type ‘struct vfio_irq_info_cap_type’
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
1642 | cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
| ^~~~~~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:54: error: initialization of ‘const int *’ from incompatible pointer type ‘struct vfio_info_cap_header *’ [-Werror=incompatible-pointer-types]
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/glib-compat.h:32,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:140,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:58:37: error: invalid use of undefined type ‘struct vfio_irq_info_cap_type’
58 | (type *) ((char *) __mptr - offsetof(type, member));})
| ^~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
| ^~~~~~~~~~~~
cc1: all warnings being treated as errors
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_irq_info_cap’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: error: ‘VFIO_IRQ_INFO_FLAG_CAPS’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_FLAG_CAPS’?
757 | if (!(info->flags & VFIO_IRQ_INFO_FLAG_CAPS)) {
| ^~~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_FLAG_CAPS
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:757:25: note: each undeclared identifier is reported only once for each function it appears in
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:761:26: error: ‘struct vfio_irq_info’ has no member named ‘cap_offset’
761 | for (hdr = ptr + info->cap_offset; hdr != ptr; hdr = ptr + hdr->next) {
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c: In function ‘vfio_get_dev_irq_info’:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1636:44: error: ‘VFIO_IRQ_INFO_CAP_TYPE’ undeclared (first use in this function); did you mean ‘VFIO_REGION_INFO_CAP_TYPE’?
1636 | hdr = vfio_get_irq_info_cap(*info, VFIO_IRQ_INFO_CAP_TYPE);
| ^~~~~~~~~~~~~~~~~~~~~~
| VFIO_REGION_INFO_CAP_TYPE
In file included from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:51,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:34: error: dereferencing pointer to incomplete type ‘struct vfio_irq_info_cap_type’
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
1642 | cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
| ^~~~~~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:57:54: error: initialization of ‘const int *’ from incompatible pointer type ‘struct vfio_info_cap_header *’ [-Werror=incompatible-pointer-types]
57 | const typeof(((type *) 0)->member) *__mptr = (ptr); \
| ^
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
---
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/glib-compat.h:32,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/osdep.h:140,
from /var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:21:
/var/tmp/patchew-tester-tmp-ymcno5d3/src/include/qemu/compiler.h:58:37: error: invalid use of undefined type ‘struct vfio_irq_info_cap_type’
58 | (type *) ((char *) __mptr - offsetof(type, member));})
| ^~~~~~~~
/var/tmp/patchew-tester-tmp-ymcno5d3/src/hw/vfio/common.c:1642:20: note: in expansion of macro ‘container_of’
The full log is available at
http://patchew.org/logs/20190604095847.10532-1-tina.zhang@intel.com/testing.s390x/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Patchew URL: https://patchew.org/QEMU/20190604095847.10532-1-tina.zhang@intel.com/
Hi,
This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.
=== TEST SCRIPT BEGIN ===
#!/bin/bash
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===
CC x86_64-softmmu/qapi/qapi-visit-target.o
CC x86_64-softmmu/qapi/qapi-visit.o
CC x86_64-softmmu/qapi/qapi-events-target.o
/tmp/qemu-test/src/hw/vfio/display.c:295:9: error: variable 'primary' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
if (!dpy->event_flags ||
^~~~~~~~~~~~~~~~~~~~
/tmp/qemu-test/src/hw/vfio/display.c:341:35: note: uninitialized use occurs here
---
VFIODMABuf *primary, *cursor;
^
= NULL
/tmp/qemu-test/src/hw/vfio/display.c:601:43: error: use of undeclared identifier 'VFIO_IRQ_TYPE_GFX'
ret = register_display_notifier(vdev, VFIO_IRQ_TYPE_GFX,
^
/tmp/qemu-test/src/hw/vfio/display.c:602:37: error: use of undeclared identifier 'VFIO_IRQ_SUBTYPE_GFX_PRI_PLANE_FLIP'
VFIO_IRQ_SUBTYPE_GFX_PRI_PLANE_FLIP,
^
/tmp/qemu-test/src/hw/vfio/display.c:610:43: error: use of undeclared identifier 'VFIO_IRQ_TYPE_GFX'
ret = register_display_notifier(vdev, VFIO_IRQ_TYPE_GFX,
^
/tmp/qemu-test/src/hw/vfio/display.c:611:36: error: use of undeclared identifier 'VFIO_IRQ_SUBTYPE_GFX_CUR_PLANE_FLIP'
VFIO_IRQ_SUBTYPE_GFX_CUR_PLANE_FLIP,
^
/tmp/qemu-test/src/hw/vfio/display.c:672:39: error: use of undeclared identifier 'VFIO_IRQ_TYPE_GFX'
unregister_display_notifier(vdev, VFIO_IRQ_TYPE_GFX,
^
/tmp/qemu-test/src/hw/vfio/display.c:673:33: error: use of undeclared identifier 'VFIO_IRQ_SUBTYPE_GFX_PRI_PLANE_FLIP'
VFIO_IRQ_SUBTYPE_GFX_PRI_PLANE_FLIP,
^
/tmp/qemu-test/src/hw/vfio/display.c:676:39: error: use of undeclared identifier 'VFIO_IRQ_TYPE_GFX'
unregister_display_notifier(vdev, VFIO_IRQ_TYPE_GFX,
^
/tmp/qemu-test/src/hw/vfio/display.c:677:33: error: use of undeclared identifier 'VFIO_IRQ_SUBTYPE_GFX_CUR_PLANE_FLIP'
VFIO_IRQ_SUBTYPE_GFX_CUR_PLANE_FLIP,
^
9 errors generated.
/tmp/qemu-test/src/hw/vfio/common.c:757:25: error: use of undeclared identifier 'VFIO_IRQ_INFO_FLAG_CAPS'
if (!(info->flags & VFIO_IRQ_INFO_FLAG_CAPS)) {
^
/tmp/qemu-test/src/hw/vfio/common.c:761:28: error: no member named 'cap_offset' in 'struct vfio_irq_info'
for (hdr = ptr + info->cap_offset; hdr != ptr; hdr = ptr + hdr->next) {
~~~~ ^
/tmp/qemu-test/src/hw/vfio/common.c:1636:44: error: use of undeclared identifier 'VFIO_IRQ_INFO_CAP_TYPE'
hdr = vfio_get_irq_info_cap(*info, VFIO_IRQ_INFO_CAP_TYPE);
^
/tmp/qemu-test/src/hw/vfio/common.c:1642:20: error: incomplete definition of type 'struct vfio_irq_info_cap_type'
cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/qemu-test/src/include/qemu/compiler.h:57:34: note: expanded from macro 'container_of'
---
/tmp/qemu-test/src/hw/vfio/common.c:1630:16: note: forward declaration of 'struct vfio_irq_info_cap_type'
struct vfio_irq_info_cap_type *cap_type;
^
/tmp/qemu-test/src/hw/vfio/common.c:1642:20: error: offsetof of incomplete type 'struct vfio_irq_info_cap_type'
cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
^ ~~~~~~
/tmp/qemu-test/src/include/qemu/compiler.h:58:37: note: expanded from macro 'container_of'
---
/tmp/qemu-test/src/hw/vfio/common.c:1630:16: note: forward declaration of 'struct vfio_irq_info_cap_type'
struct vfio_irq_info_cap_type *cap_type;
^
/tmp/qemu-test/src/hw/vfio/common.c:1642:18: error: assigning to 'struct vfio_irq_info_cap_type *' from incompatible type 'void'
cap_type = container_of(hdr, struct vfio_irq_info_cap_type, header);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/qemu-test/src/hw/vfio/common.c:1644:21: error: incomplete definition of type 'struct vfio_irq_info_cap_type'
if (cap_type->type == type && cap_type->subtype == subtype) {
~~~~~~~~^
/tmp/qemu-test/src/hw/vfio/common.c:1630:16: note: forward declaration of 'struct vfio_irq_info_cap_type'
struct vfio_irq_info_cap_type *cap_type;
^
/tmp/qemu-test/src/hw/vfio/common.c:1644:47: error: incomplete definition of type 'struct vfio_irq_info_cap_type'
if (cap_type->type == type && cap_type->subtype == subtype) {
~~~~~~~~^
/tmp/qemu-test/src/hw/vfio/common.c:1630:16: note: forward declaration of 'struct vfio_irq_info_cap_type'
The full log is available at
http://patchew.org/logs/20190604095847.10532-1-tina.zhang@intel.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
© 2016 - 2026 Red Hat, Inc.