* [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
@ 2017-07-12 9:41 Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default Jens Freimann
` (5 more replies)
0 siblings, 6 replies; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 9:41 UTC (permalink / raw)
To: qemu-devel; +Cc: marcandre.lureau, mst, victork, maxime.coquelin
This implements a testcase for pxe-test using the vhost-user interface. Spawn a
vhost-user-bridge process and connect it to the qemu process.
It is send as an RFC because:
- Patch 3/3: there must be cleaner way to do this.
- Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
- don't hardcode port numbers in qemu cmdline, create socket and pass
fd to -netdev (need to figure out how to do this)
Jens Freimann (3):
tests/vhost-user-bridge: disable debug output by default
tests/pxe-test: add testcase using vhost-user-bridge
libvhost-user: quit when no more data received
contrib/libvhost-user/libvhost-user.c | 12 +++-
contrib/libvhost-user/libvhost-user.h | 1 +
tests/Makefile.include | 4 +-
tests/pxe-test.c | 106 +++++++++++++++++++++++++++++++++-
tests/vhost-user-bridge.c | 2 +-
5 files changed, 121 insertions(+), 4 deletions(-)
--
2.9.4
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
@ 2017-07-12 9:41 ` Jens Freimann
2017-07-12 14:57 ` Maxime Coquelin
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge Jens Freimann
` (4 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 9:41 UTC (permalink / raw)
To: qemu-devel; +Cc: marcandre.lureau, mst, victork, maxime.coquelin
From: Jens Freimann <jfreiman@redhat.com>
vhost-user-bridge prints out a lot of information, including dumps
of all transmitted data. When called from a testcase this output
clutters the actual test results, so let's make the default no debug
output.
Signed-off-by: Jens Freimann <jfreiman@redhat.com>
---
tests/vhost-user-bridge.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c
index 1e5b5ca..93d9535 100644
--- a/tests/vhost-user-bridge.c
+++ b/tests/vhost-user-bridge.c
@@ -34,7 +34,7 @@
#include "standard-headers/linux/virtio_net.h"
#include "contrib/libvhost-user/libvhost-user.h"
-#define VHOST_USER_BRIDGE_DEBUG 1
+#define VHOST_USER_BRIDGE_DEBUG 0
#define DPRINT(...) \
do { \
--
2.9.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default Jens Freimann
@ 2017-07-12 9:41 ` Jens Freimann
2017-07-12 15:39 ` Maxime Coquelin
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received Jens Freimann
` (3 subsequent siblings)
5 siblings, 1 reply; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 9:41 UTC (permalink / raw)
To: qemu-devel; +Cc: marcandre.lureau, mst, victork, maxime.coquelin
From: Jens Freimann <jfreiman@redhat.com>
Add a test to pxe-test using the vhost-user interface.
Create a vhost-user-bridge process and connect it to qemu.
Signed-off-by: Jens Freimann <jfreimann@redhat.com>
---
tests/Makefile.include | 4 +-
tests/pxe-test.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 108 insertions(+), 2 deletions(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 18cd06a..eccb27e 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -698,7 +698,8 @@ tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
-tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
+tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o \
+ tests/vhost-user-bridge$(EXESUF) $(libqos-obj-y)
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
tests/m25p80-test$(EXESUF): tests/m25p80-test.o
@@ -826,6 +827,7 @@ $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
$(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
$(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
QTEST_QEMU_IMG=qemu-img$(EXESUF) \
+ QTEST_VUBR_BINARY=./tests/vhost-user-bridge$(EXESUF) \
MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER","$@")
$(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y) $(gcov-files-generic-y); do \
diff --git a/tests/pxe-test.c b/tests/pxe-test.c
index 34282d3..5a0d182 100644
--- a/tests/pxe-test.c
+++ b/tests/pxe-test.c
@@ -5,7 +5,8 @@
*
* Authors:
* Michael S. Tsirkin <mst@redhat.com>,
- * Victor Kaplansky <victork@redhat.com>
+ * Victor Kaplansky <victork@redhat.com>,
+ * Jens Freimann <jfreiman@redhat.com>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
@@ -13,13 +14,115 @@
#include "qemu/osdep.h"
#include <glib/gstdio.h>
+#include <glib.h>
#include "qemu-common.h"
#include "libqtest.h"
#include "boot-sector.h"
+#include <sys/vfs.h>
+#define LPORT 5555
+#define RPORT 4444
#define NETNAME "net0"
+#define QEMU_CMD_MEM "--enable-kvm -m %d -object memory-backend-file,id=mem,size=%dM,"\
+ "mem-path=%s,share=on -numa node,memdev=mem -mem-prealloc "
+#define QEMU_CMD_CHR " -chardev socket,id=%s,path=%s"
+#define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
+ " -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
+ " -netdev user,id=n0,tftp=./,bootfile=%s "\
+ " -netdev socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
+#define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
+ " -device virtio-net-pci,netdev=n1 "
+
+#define QEMU_CMD QEMU_CMD_MEM QEMU_CMD_CHR \
+ QEMU_CMD_NETDEV QEMU_CMD_NET
+
+#define HUGETLBFS_MAGIC 0x958458f6
+#define VUBR_SOCK "vubr.sock"
+#define MEMSZ 1024
static char disk[] = "tests/pxe-test-disk-XXXXXX";
+static const char *root;
+static const char *tmpfs;
+static const char *tmpfs2;
+
+static const char *init_hugepagefs(const char *path)
+{
+ struct statfs fs;
+ int ret;
+
+ if (access(path, R_OK | W_OK | X_OK)) {
+ g_test_message("access on path (%s): %s\n", path, strerror(errno));
+ return NULL;
+ }
+
+ do {
+ ret = statfs(path, &fs);
+ } while (ret != 0 && errno == EINTR);
+
+ if (ret != 0) {
+ g_test_message("statfs on path (%s): %s\n", path, strerror(errno));
+ return NULL;
+ }
+
+ if (fs.f_type != HUGETLBFS_MAGIC) {
+ g_test_message("Warning: path not on HugeTLBFS: %s\n", path);
+ return NULL;
+ }
+
+ return path;
+}
+
+static void test_pxe_vhost_user(void)
+{
+ char template[] = "/tmp/vhost-user-bridge-XXXXXX";
+ char template2[] = "/tmp/hugepages-XXXXXX";
+ gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
+ const char *hugefs;
+ GError *error = NULL;
+ char *vubr_binary;
+ char *qemu_args;
+ GPid vubr_pid;
+
+ tmpfs = mkdtemp(template);
+ if (!tmpfs) {
+ g_test_message("mkdtemp on path(%s): %s\n",
+ template, strerror(errno));
+ }
+ vubr_binary = getenv("QTEST_VUBR_BINARY");
+ g_assert(vubr_binary);
+ vubr_args[0] = g_strdup_printf("%s", vubr_binary);
+ vubr_args[1] = g_strdup_printf("-u");
+ vubr_args[2] = g_strdup_printf("%s/%s", tmpfs, VUBR_SOCK);
+ g_spawn_async(NULL, vubr_args, NULL,
+ G_SPAWN_SEARCH_PATH_FROM_ENVP |
+ G_SPAWN_SEARCH_PATH,
+ NULL, NULL, &vubr_pid, &error);
+ g_assert_no_error(error);
+
+ hugefs = getenv("QTEST_HUGETLBFS_PATH");
+ if (hugefs) {
+ root = init_hugepagefs(hugefs);
+ g_assert(root);
+ } else {
+ tmpfs2 = mkdtemp(template2);
+ g_assert(tmpfs2);
+ root = tmpfs2;
+ }
+
+ qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
+ "char0", vubr_args[2], "char0", disk,
+ RPORT, LPORT);
+ qtest_start(qemu_args);
+ boot_sector_test();
+ qtest_quit(global_qtest);
+ g_free(qemu_args);
+ g_free(vubr_args[0]);
+ g_free(vubr_args[1]);
+ g_free(vubr_args[2]);
+ g_assert_cmpint (g_remove(g_strdup_printf("%s/%s", tmpfs,VUBR_SOCK)),
+ ==, 0);
+ g_assert_cmpint(rmdir(tmpfs), ==, 0);
+}
static void test_pxe_one(const char *params, bool ipv6)
{
@@ -65,6 +168,7 @@ int main(int argc, char *argv[])
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
qtest_add_func("pxe/e1000", test_pxe_e1000);
qtest_add_func("pxe/virtio", test_pxe_virtio_pci);
+ qtest_add_func("pxe/vhost-user", test_pxe_vhost_user);
} else if (strcmp(arch, "ppc64") == 0) {
qtest_add_func("pxe/virtio", test_pxe_virtio_pci);
qtest_add_func("pxe/spapr-vlan", test_pxe_spapr_vlan);
--
2.9.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge Jens Freimann
@ 2017-07-12 9:41 ` Jens Freimann
2017-07-12 16:05 ` Maxime Coquelin
2017-07-13 16:01 ` Marc-André Lureau
2017-07-12 11:59 ` [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge no-reply
` (2 subsequent siblings)
5 siblings, 2 replies; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 9:41 UTC (permalink / raw)
To: qemu-devel; +Cc: marcandre.lureau, mst, victork, maxime.coquelin
From: Jens Freimann <jfreiman@redhat.com>
When recvmsg() returns a message size of zero and
errno is ENOENT end processing of vhost-user messages.
Without this we run into a vubr_panic() call and get
PANIC: Error while recvmsg: No such file or directory
Error while dispatching.
Add a switch "quit" to the vhost user device and set true to stop
processing messages.
Signed-off-by: Jens Freimann <jfreiman@redhat.com>
---
contrib/libvhost-user/libvhost-user.c | 12 +++++++++++-
contrib/libvhost-user/libvhost-user.h | 1 +
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index 9efb9da..5538859 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -161,7 +161,10 @@ vu_message_read(VuDev *dev, int conn_fd, VhostUserMsg *vmsg)
rc = recvmsg(conn_fd, &msg, 0);
} while (rc < 0 && (errno == EINTR || errno == EAGAIN));
- if (rc <= 0) {
+ if (rc == 0 && (errno == ENOENT)) {
+ vmsg->size = 0;
+ dev->quit = true;
+ } else if (rc < 0) {
vu_panic(dev, "Error while recvmsg: %s", strerror(errno));
return false;
}
@@ -755,6 +758,10 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
DPRINT("Flags: 0x%x\n", vmsg->flags);
DPRINT("Size: %d\n", vmsg->size);
+ if (dev->quit) {
+ return true;
+ }
+
if (vmsg->fd_num) {
int i;
DPRINT("Fds:");
@@ -822,6 +829,9 @@ vu_dispatch(VuDev *dev)
bool success = false;
if (!vu_message_read(dev, dev->sock, &vmsg)) {
+ if (vmsg.size == 0) {
+ success = true;
+ }
goto end;
}
diff --git a/contrib/libvhost-user/libvhost-user.h b/contrib/libvhost-user/libvhost-user.h
index 53ef222..c02215a 100644
--- a/contrib/libvhost-user/libvhost-user.h
+++ b/contrib/libvhost-user/libvhost-user.h
@@ -217,6 +217,7 @@ struct VuDev {
uint64_t features;
uint64_t protocol_features;
bool broken;
+ bool quit;
/* @set_watch: add or update the given fd to the watch set,
* call cb when condition is met */
--
2.9.4
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
` (2 preceding siblings ...)
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received Jens Freimann
@ 2017-07-12 11:59 ` no-reply
2017-07-12 12:37 ` no-reply
2017-07-12 15:10 ` Michael S. Tsirkin
5 siblings, 0 replies; 17+ messages in thread
From: no-reply @ 2017-07-12 11:59 UTC (permalink / raw)
To: jfreimann
Cc: famz, qemu-devel, marcandre.lureau, maxime.coquelin, victork, mst
Hi,
This series seems to have some coding style problems. See output below for
more information:
Type: series
Message-id: 20170712094149.23069-1-jfreimann@redhat.com
Subject: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
=== TEST SCRIPT BEGIN ===
#!/bin/bash
BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0
git config --local diff.renamelimit 0
git config --local diff.renames True
commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
failed=1
echo
fi
n=$((n+1))
done
exit $failed
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
3dbb5f8 libvhost-user: quit when no more data received
86c4c2b tests/pxe-test: add testcase using vhost-user-bridge
13bef71 tests/vhost-user-bridge: disable debug output by default
=== OUTPUT BEGIN ===
Checking PATCH 1/3: tests/vhost-user-bridge: disable debug output by default...
Checking PATCH 2/3: tests/pxe-test: add testcase using vhost-user-bridge...
WARNING: line over 80 characters
#61: FILE: tests/pxe-test.c:26:
+#define QEMU_CMD_MEM "--enable-kvm -m %d -object memory-backend-file,id=mem,size=%dM,"\
ERROR: spaces required around that '*' (ctx:WxV)
#114: FILE: tests/pxe-test.c:79:
+ gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
^
ERROR: space required after that ',' (ctx:VxV)
#157: FILE: tests/pxe-test.c:122:
+ g_assert_cmpint (g_remove(g_strdup_printf("%s/%s", tmpfs,VUBR_SOCK)),
^
ERROR: code indent should never use tabs
#158: FILE: tests/pxe-test.c:123:
+^I^I ==, 0);$
total: 3 errors, 1 warnings, 147 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 3/3: libvhost-user: quit when no more data received...
=== OUTPUT END ===
Test command exited with code: 1
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
` (3 preceding siblings ...)
2017-07-12 11:59 ` [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge no-reply
@ 2017-07-12 12:37 ` no-reply
2017-07-12 15:10 ` Michael S. Tsirkin
5 siblings, 0 replies; 17+ messages in thread
From: no-reply @ 2017-07-12 12:37 UTC (permalink / raw)
To: jfreimann
Cc: famz, qemu-devel, marcandre.lureau, maxime.coquelin, victork, mst
Hi,
This series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 20170712094149.23069-1-jfreimann@redhat.com
Subject: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
# Let docker tests dump environment info
export SHOW_ENV=1
export J=8
time make docker-test-quick@centos6
time make docker-test-build@min-glib
time make docker-test-mingw@fedora
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
3dbb5f8 libvhost-user: quit when no more data received
86c4c2b tests/pxe-test: add testcase using vhost-user-bridge
13bef71 tests/vhost-user-bridge: disable debug output by default
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into '/var/tmp/patchew-tester-tmp-2sgtaygz/src/dtc'...
Submodule path 'dtc': checked out '558cd81bdd432769b59bff01240c44f82cfb1a9d'
BUILD centos6
make[1]: Entering directory '/var/tmp/patchew-tester-tmp-2sgtaygz/src'
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-quick in qemu:centos6
Packages installed:
SDL-devel-1.2.14-7.el6_7.1.x86_64
bison-2.4.1-5.el6.x86_64
ccache-3.1.6-2.el6.x86_64
epel-release-6-8.noarch
flex-2.5.35-9.el6.x86_64
gcc-4.4.7-18.el6.x86_64
git-1.7.1-8.el6.x86_64
glib2-devel-2.28.8-9.el6.x86_64
libfdt-devel-1.4.0-1.el6.x86_64
make-3.81-23.el6.x86_64
package g++ is not installed
pixman-devel-0.32.8-1.el6.x86_64
tar-1.23-15.el6_8.x86_64
zlib-devel-1.2.3-29.el6.x86_64
Environment variables:
PACKAGES=libfdt-devel ccache tar git make gcc g++ flex bison zlib-devel glib2-devel SDL-devel pixman-devel epel-release
HOSTNAME=c9769db80a9b
TERM=xterm
MAKEFLAGS= -j8
HISTSIZE=1000
J=8
USER=root
CCACHE_DIR=/var/tmp/ccache
EXTRA_CONFIGURE_OPTS=
V=
SHOW_ENV=1
MAIL=/var/spool/mail/root
PATH=/usr/lib/ccache:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
LANG=en_US.UTF-8
TARGET_LIST=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
TEST_DIR=/tmp/qemu-test
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
FEATURES= dtc
DEBUG=
G_BROKEN_FILENAMES=1
CCACHE_HASHDIR=
_=/usr/bin/env
Configure options:
--enable-werror --target-list=x86_64-softmmu,aarch64-softmmu --prefix=/var/tmp/qemu-build/install
/tmp/qemu-test/src/configure: line 4771: c++: command not found
No C++ compiler available; disabling C++ specific optional code
Install prefix /var/tmp/qemu-build/install
BIOS directory /var/tmp/qemu-build/install/share/qemu
binary directory /var/tmp/qemu-build/install/bin
library directory /var/tmp/qemu-build/install/lib
module directory /var/tmp/qemu-build/install/lib/qemu
libexec directory /var/tmp/qemu-build/install/libexec
include directory /var/tmp/qemu-build/install/include
config directory /var/tmp/qemu-build/install/etc
local state directory /var/tmp/qemu-build/install/var
Manual directory /var/tmp/qemu-build/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -g
QEMU_CFLAGS -I/usr/include/pixman-1 -I$(SRC_PATH)/dtc/libfdt -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -fPIE -DPIE -m64 -mcx16 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wno-missing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
HAX support no
TCG support yes
TCG debug enabled no
TCG interpreter no
RDMA support no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
debug stack usage no
GlusterFS support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
Live block migration yes
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
VxHS block device no
GEN x86_64-softmmu/config-devices.mak.tmp
mkdir -p dtc/libfdt
GEN aarch64-softmmu/config-devices.mak.tmp
mkdir -p dtc/tests
GEN config-host.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN qmp-marshal.c
GEN qapi-types.c
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qapi-visit.c
GEN qapi-event.c
GEN qmp-introspect.h
GEN qmp-introspect.c
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
GEN module_block.h
GEN trace/generated-helpers.c
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN trace-root.h
GEN util/trace.h
GEN crypto/trace.h
GEN io/trace.h
GEN migration/trace.h
GEN block/trace.h
GEN backends/trace.h
GEN chardev/trace.h
GEN hw/block/trace.h
GEN hw/block/dataplane/trace.h
GEN hw/char/trace.h
GEN hw/intc/trace.h
GEN hw/net/trace.h
GEN hw/virtio/trace.h
GEN hw/audio/trace.h
GEN hw/misc/trace.h
GEN hw/usb/trace.h
GEN hw/scsi/trace.h
GEN hw/nvram/trace.h
GEN hw/display/trace.h
GEN hw/input/trace.h
GEN hw/timer/trace.h
GEN hw/dma/trace.h
GEN hw/sparc/trace.h
GEN hw/sd/trace.h
GEN hw/isa/trace.h
GEN hw/mem/trace.h
GEN hw/i386/trace.h
GEN hw/i386/xen/trace.h
GEN hw/9pfs/trace.h
GEN hw/ppc/trace.h
GEN hw/pci/trace.h
GEN hw/s390x/trace.h
GEN hw/vfio/trace.h
GEN hw/acpi/trace.h
GEN hw/arm/trace.h
GEN hw/alpha/trace.h
GEN hw/xen/trace.h
GEN ui/trace.h
GEN audio/trace.h
GEN net/trace.h
GEN target/arm/trace.h
GEN target/i386/trace.h
GEN target/mips/trace.h
GEN target/sparc/trace.h
GEN target/s390x/trace.h
GEN target/ppc/trace.h
GEN qom/trace.h
GEN linux-user/trace.h
GEN qapi/trace.h
GEN accel/tcg/trace.h
GEN accel/kvm/trace.h
GEN nbd/trace.h
GEN trace-root.c
GEN util/trace.c
GEN crypto/trace.c
GEN io/trace.c
GEN migration/trace.c
GEN block/trace.c
GEN backends/trace.c
GEN chardev/trace.c
GEN hw/block/trace.c
GEN hw/block/dataplane/trace.c
GEN hw/char/trace.c
GEN hw/intc/trace.c
GEN hw/net/trace.c
GEN hw/virtio/trace.c
GEN hw/audio/trace.c
GEN hw/misc/trace.c
GEN hw/usb/trace.c
GEN hw/scsi/trace.c
GEN hw/nvram/trace.c
GEN hw/display/trace.c
GEN hw/input/trace.c
GEN hw/timer/trace.c
GEN hw/dma/trace.c
GEN hw/sparc/trace.c
GEN hw/sd/trace.c
GEN hw/isa/trace.c
GEN hw/mem/trace.c
GEN hw/i386/trace.c
GEN hw/i386/xen/trace.c
GEN hw/9pfs/trace.c
GEN hw/ppc/trace.c
GEN hw/pci/trace.c
GEN hw/s390x/trace.c
GEN hw/vfio/trace.c
GEN hw/acpi/trace.c
GEN hw/arm/trace.c
GEN hw/alpha/trace.c
GEN hw/xen/trace.c
GEN ui/trace.c
GEN audio/trace.c
GEN net/trace.c
GEN target/arm/trace.c
GEN target/i386/trace.c
GEN target/mips/trace.c
GEN target/sparc/trace.c
GEN target/s390x/trace.c
GEN target/ppc/trace.c
GEN qom/trace.c
GEN linux-user/trace.c
GEN qapi/trace.c
GEN accel/tcg/trace.c
GEN accel/kvm/trace.c
GEN nbd/trace.c
GEN config-all-devices.mak
DEP /tmp/qemu-test/src/dtc/tests/dumptrees.c
DEP /tmp/qemu-test/src/dtc/tests/trees.S
DEP /tmp/qemu-test/src/dtc/tests/testutils.c
DEP /tmp/qemu-test/src/dtc/tests/value-labels.c
DEP /tmp/qemu-test/src/dtc/tests/asm_tree_dump.c
DEP /tmp/qemu-test/src/dtc/tests/check_path.c
DEP /tmp/qemu-test/src/dtc/tests/truncated_property.c
DEP /tmp/qemu-test/src/dtc/tests/overlay_bad_fixup.c
DEP /tmp/qemu-test/src/dtc/tests/overlay.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/property_iterate.c
DEP /tmp/qemu-test/src/dtc/tests/integer-expressions.c
DEP /tmp/qemu-test/src/dtc/tests/utilfdt_test.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset_aliases.c
DEP /tmp/qemu-test/src/dtc/tests/add_subnode_with_nops.c
DEP /tmp/qemu-test/src/dtc/tests/dtb_reverse.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_ordered.c
DEP /tmp/qemu-test/src/dtc/tests/dtbs_equal_unordered.c
DEP /tmp/qemu-test/src/dtc/tests/extra-terminating-null.c
DEP /tmp/qemu-test/src/dtc/tests/incbin.c
DEP /tmp/qemu-test/src/dtc/tests/boot-cpuid.c
DEP /tmp/qemu-test/src/dtc/tests/phandle_format.c
DEP /tmp/qemu-test/src/dtc/tests/path-references.c
DEP /tmp/qemu-test/src/dtc/tests/references.c
DEP /tmp/qemu-test/src/dtc/tests/string_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/propname_escapes.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop1.c
DEP /tmp/qemu-test/src/dtc/tests/appendprop2.c
DEP /tmp/qemu-test/src/dtc/tests/del_node.c
DEP /tmp/qemu-test/src/dtc/tests/del_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop.c
DEP /tmp/qemu-test/src/dtc/tests/set_name.c
DEP /tmp/qemu-test/src/dtc/tests/rw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nopulate.c
DEP /tmp/qemu-test/src/dtc/tests/open_pack.c
DEP /tmp/qemu-test/src/dtc/tests/mangle-layout.c
DEP /tmp/qemu-test/src/dtc/tests/move_and_save.c
DEP /tmp/qemu-test/src/dtc/tests/sw_tree1.c
DEP /tmp/qemu-test/src/dtc/tests/nop_node.c
DEP /tmp/qemu-test/src/dtc/tests/nop_property.c
DEP /tmp/qemu-test/src/dtc/tests/setprop_inplace.c
DEP /tmp/qemu-test/src/dtc/tests/stringlist.c
DEP /tmp/qemu-test/src/dtc/tests/addr_size_cells.c
DEP /tmp/qemu-test/src/dtc/tests/notfound.c
DEP /tmp/qemu-test/src/dtc/tests/sized_cells.c
DEP /tmp/qemu-test/src/dtc/tests/char_literal.c
DEP /tmp/qemu-test/src/dtc/tests/get_alias.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/node_offset_by_prop_value.c
DEP /tmp/qemu-test/src/dtc/tests/parent_offset.c
DEP /tmp/qemu-test/src/dtc/tests/node_check_compatible.c
DEP /tmp/qemu-test/src/dtc/tests/supernode_atdepth_offset.c
DEP /tmp/qemu-test/src/dtc/tests/get_path.c
DEP /tmp/qemu-test/src/dtc/tests/get_phandle.c
DEP /tmp/qemu-test/src/dtc/tests/getprop.c
DEP /tmp/qemu-test/src/dtc/tests/get_name.c
DEP /tmp/qemu-test/src/dtc/tests/path_offset.c
DEP /tmp/qemu-test/src/dtc/tests/subnode_offset.c
DEP /tmp/qemu-test/src/dtc/tests/find_property.c
DEP /tmp/qemu-test/src/dtc/tests/root_node.c
DEP /tmp/qemu-test/src/dtc/tests/get_mem_rsv.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_overlay.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_addresses.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_empty_tree.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_strerror.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_rw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_sw.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_wip.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt_ro.c
DEP /tmp/qemu-test/src/dtc/libfdt/fdt.c
DEP /tmp/qemu-test/src/dtc/util.c
DEP /tmp/qemu-test/src/dtc/fdtget.c
DEP /tmp/qemu-test/src/dtc/fdtput.c
DEP /tmp/qemu-test/src/dtc/fdtdump.c
LEX convert-dtsv0-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/srcpos.c
BISON dtc-parser.tab.c
LEX dtc-lexer.lex.c
DEP /tmp/qemu-test/src/dtc/treesource.c
DEP /tmp/qemu-test/src/dtc/livetree.c
DEP /tmp/qemu-test/src/dtc/fstree.c
DEP /tmp/qemu-test/src/dtc/flattree.c
DEP /tmp/qemu-test/src/dtc/dtc.c
DEP /tmp/qemu-test/src/dtc/data.c
DEP /tmp/qemu-test/src/dtc/checks.c
DEP convert-dtsv0-lexer.lex.c
DEP dtc-parser.tab.c
DEP dtc-lexer.lex.c
CHK version_gen.h
UPD version_gen.h
DEP /tmp/qemu-test/src/dtc/util.c
CC libfdt/fdt.o
CC libfdt/fdt_ro.o
CC libfdt/fdt_sw.o
CC libfdt/fdt_wip.o
CC libfdt/fdt_rw.o
CC libfdt/fdt_empty_tree.o
CC libfdt/fdt_addresses.o
CC libfdt/fdt_strerror.o
CC libfdt/fdt_overlay.o
AR libfdt/libfdt.a
ar: creating libfdt/libfdt.a
a - libfdt/fdt.o
a - libfdt/fdt_ro.o
a - libfdt/fdt_wip.o
a - libfdt/fdt_sw.o
a - libfdt/fdt_rw.o
a - libfdt/fdt_strerror.o
a - libfdt/fdt_empty_tree.o
a - libfdt/fdt_addresses.o
a - libfdt/fdt_overlay.o
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qmp-marshal.c
CC qmp-introspect.o
GEN qga/qapi-generated/qga-qapi-visit.c
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qobject-input-visitor.o
CC qapi/qobject-output-visitor.o
CC qapi/qmp-dispatch.o
CC qapi/qmp-registry.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qapi/qmp-event.o
CC qobject/qnum.o
CC qobject/qstring.o
CC qobject/qlist.o
CC qobject/qdict.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/lockcnt.o
CC util/aiocb.o
CC util/async.o
CC util/thread-pool.o
CC util/qemu-timer.o
CC util/main-loop.o
CC util/iohandler.o
CC util/aio-posix.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/host-utils.o
CC util/bitmap.o
CC util/bitops.o
CC util/fifo8.o
CC util/acl.o
CC util/hbitmap.o
CC util/cacheinfo.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/qemu-sockets.o
CC util/notify.o
CC util/uri.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/keyval.o
CC util/hexdump.o
CC util/uuid.o
CC util/crc32c.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rcu.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-io.o
CC util/coroutine-ucontext.o
CC util/buffer.o
CC util/qemu-coroutine-sleep.o
CC util/timed-average.o
CC util/base64.o
CC util/qdist.o
CC util/log.o
CC util/qht.o
CC util/range.o
CC util/stats64.o
CC util/systemd.o
CC trace-root.o
CC util/trace.o
CC io/trace.o
CC crypto/trace.o
CC migration/trace.o
CC block/trace.o
CC chardev/trace.o
CC backends/trace.o
CC hw/block/trace.o
CC hw/block/dataplane/trace.o
CC hw/char/trace.o
CC hw/intc/trace.o
CC hw/net/trace.o
CC hw/virtio/trace.o
CC hw/audio/trace.o
CC hw/misc/trace.o
CC hw/usb/trace.o
CC hw/scsi/trace.o
CC hw/nvram/trace.o
CC hw/input/trace.o
CC hw/display/trace.o
CC hw/dma/trace.o
CC hw/timer/trace.o
CC hw/sparc/trace.o
CC hw/sd/trace.o
CC hw/isa/trace.o
CC hw/mem/trace.o
CC hw/i386/trace.o
CC hw/i386/xen/trace.o
CC hw/9pfs/trace.o
CC hw/ppc/trace.o
CC hw/pci/trace.o
CC hw/s390x/trace.o
CC hw/acpi/trace.o
CC hw/vfio/trace.o
CC hw/arm/trace.o
CC hw/alpha/trace.o
CC hw/xen/trace.o
CC ui/trace.o
CC audio/trace.o
CC net/trace.o
CC target/arm/trace.o
CC target/i386/trace.o
CC target/mips/trace.o
CC target/sparc/trace.o
CC target/s390x/trace.o
CC target/ppc/trace.o
CC qom/trace.o
CC linux-user/trace.o
CC qapi/trace.o
CC accel/tcg/trace.o
CC accel/kvm/trace.o
CC crypto/pbkdf-stub.o
CC nbd/trace.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-icount.o
CC stubs/cpu-get-clock.o
CC stubs/dump.o
CC stubs/error-printf.o
CC stubs/fdset.o
CC stubs/gdbstub.o
CC stubs/iothread.o
CC stubs/get-vm-name.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/monitor.o
CC stubs/qtest.o
CC stubs/notify-event.o
CC stubs/replay.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/slirp.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/vmgenid.o
CC stubs/xen-common.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/xen-hvm.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC block.o
CC blockjob.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw-format.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/dmg.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/vhdx.o
CC block/vhdx-endian.o
CC block/vhdx-log.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/file-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/sheepdog.o
CC block/nbd-client.o
CC block/dirty-bitmap.o
CC block/accounting.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/hmac.o
CC crypto/hmac-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/cipher.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/block.o
CC crypto/xts.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/dns-resolver.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qemu-io.o
GEN qemu-img-cmds.h
CC qemu-bridge-helper.o
CC qom/object_interfaces.o
CC blockdev.o
CC blockdev-nbd.o
CC bootdevice.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
CC qmp-marshal.o
CC qmp.o
CC hmp.o
CC audio/audio.o
CC cpus-common.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/ossaudio.o
CC audio/sdlaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC backends/cryptodev.o
CC backends/cryptodev-builtin.o
CC block/stream.o
CC chardev/msmouse.o
CC chardev/wctablet.o
CC chardev/testdev.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC fsdev/qemu-fsdev-opts.o
CC fsdev/qemu-fsdev-throttle.o
CC hw/acpi/core.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/cpu.o
CC hw/acpi/nvdimm.o
CC hw/acpi/vmgenid.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/acpi/acpi-stub.o
CC hw/acpi/ipmi-stub.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/audio/soundhw.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/ecc.o
CC hw/block/onenand.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/imx_serial.o
CC hw/char/debugcon.o
CC hw/core/qdev-properties.o
CC hw/core/qdev.o
CC hw/core/bus.o
CC hw/core/reset.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/nmi.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/or-irq.o
CC hw/cpu/core.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0323.o
CC hw/display/ssd0303.o
CC hw/display/vmware_vga.o
CC hw/display/vga-pci.o
CC hw/display/vga-isa.o
CC hw/display/exynos4210_fimd.o
CC hw/display/blizzard.o
CC hw/display/tc6393xb.o
CC hw/display/framebuffer.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/gpio/max7310.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/pl190.o
CC hw/intc/i8259.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_its_common.o
CC hw/intc/arm_gicv3_redist.o
CC hw/intc/intc.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/tmp421.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/edu.o
CC hw/misc/unimp.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/e1000.o
CC hw/net/e1000e.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/ne2000-isa.o
CC hw/net/lan9118.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/ftgmac100.o
CC hw/net/rocker/rocker.o
CC hw/net/stellaris_enet.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/nvram/chrp_nvram.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pcie_root_port.o
CC hw/pci-bridge/gen_pcie_root_port.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp-pci.o
CC hw/scsi/esp.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/core.o
CC hw/sd/sd.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/smbios/smbios_type_38-stub.o
CC hw/smbios/smbios-stub.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/ssi/stm32f2xx_spi.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/armv7m_systick.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/usb/core.o
CC hw/tpm/tpm_util.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-xhci-nec.o
CC hw/usb/dev-hub.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-mtp.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/virtio/vhost-stub.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_ib700.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_aspeed.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/channel.o
CC migration/colo-comm.o
CC migration/colo.o
CC migration/savevm.o
CC migration/colo-failover.o
CC migration/vmstate.o
CC migration/page_cache.o
CC migration/vmstate-types.o
CC migration/qemu-file.o
CC migration/global_state.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/vhost-user.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC net/colo-compare.o
CC net/colo.o
CC net/filter-rewriter.o
CC net/filter-replay.o
CC net/tap.o
CC net/tap-linux.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:65: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC replay/replay-snapshot.o
CC replay/replay-net.o
CC replay/replay-audio.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip_icmp.o
CC slirp/ip6_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/misc.o
CC slirp/mbuf.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
CC slirp/tftp.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC slirp/ncsi.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input-keymap.o
CC ui/input.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/sdl.o
CC ui/sdl_zoom.o
CC ui/x_keymap.o
CC ui/vnc-enc-zlib.o
CC ui/vnc.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-ws.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-jobs.o
CC chardev/char-fd.o
CC chardev/char-fe.o
CC chardev/char.o
CC chardev/char-io.o
CC chardev/char-file.o
CC chardev/char-mux.o
CC chardev/char-null.o
CC chardev/char-parallel.o
CC chardev/char-pipe.o
CC chardev/char-pty.o
CC chardev/char-ringbuf.o
CC chardev/char-serial.o
CC chardev/char-stdio.o
CC chardev/char-socket.o
CC chardev/char-udp.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/guest-agent-command-state.o
CC qga/commands.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qmp-marshal.o
CC qga/qapi-generated/qga-qapi-visit.o
AR libqemuutil.a
CC qemu-img.o
AR libqemustub.a
AS optionrom/multiboot.o
AS optionrom/kvmvapic.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
BUILD optionrom/linuxboot.img
BUILD optionrom/multiboot.img
BUILD optionrom/kvmvapic.img
BUILD optionrom/linuxboot.raw
BUILD optionrom/multiboot.raw
BUILD optionrom/kvmvapic.raw
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
BUILD optionrom/linuxboot_dma.img
BUILD optionrom/linuxboot_dma.raw
SIGN optionrom/multiboot.bin
SIGN optionrom/kvmvapic.bin
SIGN optionrom/linuxboot.bin
SIGN optionrom/linuxboot_dma.bin
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-img
LINK qemu-io
LINK qemu-bridge-helper
LINK qemu-ga
GEN x86_64-softmmu/config-target.h
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN aarch64-softmmu/config-target.h
GEN aarch64-softmmu/hmp-commands.h
GEN aarch64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/tcg/tcg-runtime.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
GEN x86_64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/hax-stub.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
CC x86_64-softmmu/gdbstub.o
CC x86_64-softmmu/balloon.o
CC x86_64-softmmu/ioport.o
CC x86_64-softmmu/numa.o
CC x86_64-softmmu/qtest.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/memory_mapping.o
CC x86_64-softmmu/dump.o
CC x86_64-softmmu/migration/ram.o
CC x86_64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/accel/accel.o
CC x86_64-softmmu/accel/kvm/kvm-all.o
CC aarch64-softmmu/exec.o
CC x86_64-softmmu/accel/tcg/cputlb.o
CC x86_64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/tcg/tcg-op.o
CC aarch64-softmmu/tcg/tcg.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/tcg/tcg-runtime.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/core/null-machine.o
CC aarch64-softmmu/disas.o
GEN aarch64-softmmu/gdbstub-xml.c
CC aarch64-softmmu/hax-stub.o
CC aarch64-softmmu/arch_init.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/monitor.o
CC aarch64-softmmu/balloon.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/memory_mapping.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC aarch64-softmmu/dump.o
CC x86_64-softmmu/hw/intc/apic.o
CC aarch64-softmmu/accel/accel.o
CC aarch64-softmmu/migration/ram.o
CC aarch64-softmmu/accel/stubs/kvm-stub.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC aarch64-softmmu/accel/tcg/tcg-all.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/accel/tcg/cputlb.o
CC aarch64-softmmu/accel/tcg/cpu-exec.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/accel/tcg/cpu-exec-common.o
CC aarch64-softmmu/accel/tcg/translate-all.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC x86_64-softmmu/hw/misc/mmio_interface.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/adc/stm32f2xx_adc.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC x86_64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC x86_64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC x86_64-softmmu/hw/vfio/pci.o
CC x86_64-softmmu/hw/vfio/pci-quirks.o
CC x86_64-softmmu/hw/vfio/platform.o
CC x86_64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/generic-loader.o
CC x86_64-softmmu/hw/virtio/virtio.o
CC x86_64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/core/null-machine.o
CC x86_64-softmmu/hw/virtio/vhost.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC x86_64-softmmu/hw/virtio/vhost-backend.o
CC x86_64-softmmu/hw/virtio/vhost-user.o
CC x86_64-softmmu/hw/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC x86_64-softmmu/hw/virtio/virtio-crypto.o
CC x86_64-softmmu/hw/virtio/virtio-crypto-pci.o
CC x86_64-softmmu/hw/i386/pc.o
CC x86_64-softmmu/hw/i386/multiboot.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC x86_64-softmmu/hw/i386/pc_piix.o
CC x86_64-softmmu/hw/i386/pc_q35.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC x86_64-softmmu/hw/i386/pc_sysfw.o
CC x86_64-softmmu/hw/i386/x86-iommu.o
CC aarch64-softmmu/hw/display/vga.o
CC x86_64-softmmu/hw/i386/intel_iommu.o
/tmp/qemu-test/src/hw/i386/pc_piix.c: In function ‘igd_passthrough_isa_bridge_create’:
/tmp/qemu-test/src/hw/i386/pc_piix.c:1065: warning: ‘pch_rev_id’ may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/amd_iommu.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC x86_64-softmmu/hw/i386/kvmvapic.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/i386/acpi-build.o
CC aarch64-softmmu/hw/display/dpcd.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
CC x86_64-softmmu/hw/i386/pci-assign-load-rom.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC x86_64-softmmu/hw/i386/kvm/clock.o
CC x86_64-softmmu/hw/i386/kvm/apic.o
CC x86_64-softmmu/hw/i386/kvm/i8259.o
/tmp/qemu-test/src/hw/i386/acpi-build.c: In function ‘build_append_pci_bus_devices’:
/tmp/qemu-test/src/hw/i386/acpi-build.c:525: warning: ‘notify_method’ may be used uninitialized in this function
CC x86_64-softmmu/hw/i386/kvm/ioapic.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC x86_64-softmmu/hw/i386/kvm/i8254.o
CC x86_64-softmmu/hw/i386/kvm/pci-assign.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC x86_64-softmmu/target/i386/helper.o
CC x86_64-softmmu/target/i386/cpu.o
CC x86_64-softmmu/target/i386/gdbstub.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC x86_64-softmmu/target/i386/xsave_helper.o
CC x86_64-softmmu/target/i386/translate.o
CC x86_64-softmmu/target/i386/bpt_helper.o
CC x86_64-softmmu/target/i386/cc_helper.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/gpio/bcm2835_gpio.o
CC x86_64-softmmu/target/i386/excp_helper.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC x86_64-softmmu/target/i386/fpu_helper.o
CC x86_64-softmmu/target/i386/int_helper.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC x86_64-softmmu/target/i386/mem_helper.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC x86_64-softmmu/target/i386/misc_helper.o
CC x86_64-softmmu/target/i386/mpx_helper.o
CC x86_64-softmmu/target/i386/seg_helper.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC x86_64-softmmu/target/i386/smm_helper.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC x86_64-softmmu/target/i386/svm_helper.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC x86_64-softmmu/target/i386/machine.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/target/i386/arch_memory_mapping.o
CC x86_64-softmmu/target/i386/arch_dump.o
CC x86_64-softmmu/target/i386/monitor.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC aarch64-softmmu/hw/misc/cbus.o
CC x86_64-softmmu/target/i386/kvm.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/exynos4210_clk.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC x86_64-softmmu/target/i386/hyperv.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
GEN trace/generated-helpers.c
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC x86_64-softmmu/trace/control-target.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
CC aarch64-softmmu/hw/misc/bcm2835_property.o
CC aarch64-softmmu/hw/misc/bcm2835_rng.o
CC aarch64-softmmu/hw/misc/zynq_slcr.o
CC x86_64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/hw/misc/zynq-xadc.o
CC aarch64-softmmu/hw/misc/stm32f2xx_syscfg.o
CC aarch64-softmmu/hw/misc/auxbus.o
CC x86_64-softmmu/trace/generated-helpers.o
CC aarch64-softmmu/hw/misc/aspeed_scu.o
CC aarch64-softmmu/hw/misc/aspeed_sdmc.o
CC aarch64-softmmu/hw/misc/mmio_interface.o
CC aarch64-softmmu/hw/net/virtio-net.o
CC aarch64-softmmu/hw/net/vhost_net.o
CC aarch64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/hw/pcmcia/pxa2xx.o
CC aarch64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC aarch64-softmmu/hw/scsi/vhost-scsi-common.o
CC aarch64-softmmu/hw/scsi/vhost-user-scsi.o
CC aarch64-softmmu/hw/sd/omap_mmc.o
CC aarch64-softmmu/hw/sd/bcm2835_sdhost.o
CC aarch64-softmmu/hw/sd/pxa2xx_mmci.o
LINK x86_64-softmmu/qemu-system-x86_64
CC aarch64-softmmu/hw/ssi/omap_spi.o
CC aarch64-softmmu/hw/ssi/imx_spi.o
CC aarch64-softmmu/hw/timer/exynos4210_pwm.o
CC aarch64-softmmu/hw/timer/exynos4210_mct.o
CC aarch64-softmmu/hw/timer/exynos4210_rtc.o
CC aarch64-softmmu/hw/timer/omap_gptimer.o
CC aarch64-softmmu/hw/timer/omap_synctimer.o
CC aarch64-softmmu/hw/timer/pxa2xx_timer.o
CC aarch64-softmmu/hw/timer/digic-timer.o
CC aarch64-softmmu/hw/timer/allwinner-a10-pit.o
CC aarch64-softmmu/hw/usb/tusb6010.o
CC aarch64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/hw/vfio/pci.o
CC aarch64-softmmu/hw/vfio/pci-quirks.o
CC aarch64-softmmu/hw/vfio/platform.o
CC aarch64-softmmu/hw/vfio/calxeda-xgmac.o
CC aarch64-softmmu/hw/vfio/amd-xgbe.o
CC aarch64-softmmu/hw/vfio/spapr.o
CC aarch64-softmmu/hw/virtio/virtio.o
CC aarch64-softmmu/hw/virtio/virtio-balloon.o
CC aarch64-softmmu/hw/virtio/vhost.o
CC aarch64-softmmu/hw/virtio/vhost-backend.o
CC aarch64-softmmu/hw/virtio/vhost-user.o
CC aarch64-softmmu/hw/virtio/vhost-vsock.o
CC aarch64-softmmu/hw/virtio/virtio-crypto.o
CC aarch64-softmmu/hw/virtio/virtio-crypto-pci.o
CC aarch64-softmmu/hw/arm/boot.o
CC aarch64-softmmu/hw/arm/collie.o
CC aarch64-softmmu/hw/arm/exynos4_boards.o
CC aarch64-softmmu/hw/arm/gumstix.o
CC aarch64-softmmu/hw/arm/highbank.o
CC aarch64-softmmu/hw/arm/digic_boards.o
CC aarch64-softmmu/hw/arm/integratorcp.o
CC aarch64-softmmu/hw/arm/mainstone.o
CC aarch64-softmmu/hw/arm/musicpal.o
CC aarch64-softmmu/hw/arm/nseries.o
CC aarch64-softmmu/hw/arm/omap_sx1.o
CC aarch64-softmmu/hw/arm/palm.o
CC aarch64-softmmu/hw/arm/realview.o
CC aarch64-softmmu/hw/arm/spitz.o
CC aarch64-softmmu/hw/arm/stellaris.o
CC aarch64-softmmu/hw/arm/tosa.o
CC aarch64-softmmu/hw/arm/versatilepb.o
CC aarch64-softmmu/hw/arm/vexpress.o
CC aarch64-softmmu/hw/arm/virt.o
CC aarch64-softmmu/hw/arm/xilinx_zynq.o
CC aarch64-softmmu/hw/arm/z2.o
CC aarch64-softmmu/hw/arm/virt-acpi-build.o
CC aarch64-softmmu/hw/arm/netduino2.o
CC aarch64-softmmu/hw/arm/armv7m.o
CC aarch64-softmmu/hw/arm/sysbus-fdt.o
CC aarch64-softmmu/hw/arm/exynos4210.o
CC aarch64-softmmu/hw/arm/pxa2xx.o
CC aarch64-softmmu/hw/arm/pxa2xx_gpio.o
CC aarch64-softmmu/hw/arm/digic.o
CC aarch64-softmmu/hw/arm/pxa2xx_pic.o
CC aarch64-softmmu/hw/arm/omap1.o
CC aarch64-softmmu/hw/arm/omap2.o
CC aarch64-softmmu/hw/arm/strongarm.o
CC aarch64-softmmu/hw/arm/allwinner-a10.o
CC aarch64-softmmu/hw/arm/cubieboard.o
CC aarch64-softmmu/hw/arm/bcm2835_peripherals.o
CC aarch64-softmmu/hw/arm/bcm2836.o
CC aarch64-softmmu/hw/arm/raspi.o
CC aarch64-softmmu/hw/arm/stm32f205_soc.o
CC aarch64-softmmu/hw/arm/xlnx-zynqmp.o
CC aarch64-softmmu/hw/arm/xlnx-ep108.o
CC aarch64-softmmu/hw/arm/imx25_pdk.o
CC aarch64-softmmu/hw/arm/fsl-imx25.o
CC aarch64-softmmu/hw/arm/fsl-imx31.o
CC aarch64-softmmu/hw/arm/kzm.o
CC aarch64-softmmu/hw/arm/fsl-imx6.o
CC aarch64-softmmu/hw/arm/sabrelite.o
CC aarch64-softmmu/hw/arm/aspeed.o
CC aarch64-softmmu/hw/arm/aspeed_soc.o
CC aarch64-softmmu/target/arm/arm-semi.o
CC aarch64-softmmu/target/arm/machine.o
CC aarch64-softmmu/target/arm/psci.o
CC aarch64-softmmu/target/arm/arch_dump.o
CC aarch64-softmmu/target/arm/monitor.o
CC aarch64-softmmu/target/arm/translate.o
CC aarch64-softmmu/target/arm/kvm-stub.o
CC aarch64-softmmu/target/arm/op_helper.o
CC aarch64-softmmu/target/arm/helper.o
CC aarch64-softmmu/target/arm/cpu.o
CC aarch64-softmmu/target/arm/neon_helper.o
CC aarch64-softmmu/target/arm/gdbstub.o
CC aarch64-softmmu/target/arm/iwmmxt_helper.o
CC aarch64-softmmu/target/arm/cpu64.o
CC aarch64-softmmu/target/arm/helper-a64.o
CC aarch64-softmmu/target/arm/translate-a64.o
CC aarch64-softmmu/target/arm/gdbstub64.o
CC aarch64-softmmu/target/arm/crypto_helper.o
CC aarch64-softmmu/target/arm/arm-powerctl.o
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘handle_shri_with_rndacc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:6367: warning: ‘tcg_src_hi’ may be used uninitialized in this function
/tmp/qemu-test/src/target/arm/translate-a64.c: In function ‘disas_simd_scalar_two_reg_misc’:
/tmp/qemu-test/src/target/arm/translate-a64.c:8094: warning: ‘rmode’ may be used uninitialized in this function
GEN trace/generated-helpers.c
CC aarch64-softmmu/trace/control-target.o
CC aarch64-softmmu/gdbstub-xml.o
CC aarch64-softmmu/trace/generated-helpers.o
LINK aarch64-softmmu/qemu-system-aarch64
TEST tests/qapi-schema/alternate-base.out
TEST tests/qapi-schema/alternate-any.out
TEST tests/qapi-schema/alternate-array.out
TEST tests/qapi-schema/alternate-clash.out
TEST tests/qapi-schema/alternate-conflict-dict.out
TEST tests/qapi-schema/alternate-conflict-enum-int.out
TEST tests/qapi-schema/alternate-conflict-enum-bool.out
TEST tests/qapi-schema/alternate-conflict-string.out
TEST tests/qapi-schema/alternate-empty.out
TEST tests/qapi-schema/alternate-nested.out
TEST tests/qapi-schema/alternate-unknown.out
TEST tests/qapi-schema/args-any.out
TEST tests/qapi-schema/args-alternate.out
TEST tests/qapi-schema/args-array-empty.out
TEST tests/qapi-schema/args-array-unknown.out
TEST tests/qapi-schema/args-bad-boxed.out
TEST tests/qapi-schema/args-boxed-anon.out
TEST tests/qapi-schema/args-boxed-empty.out
TEST tests/qapi-schema/args-boxed-string.out
TEST tests/qapi-schema/args-int.out
TEST tests/qapi-schema/args-invalid.out
TEST tests/qapi-schema/args-member-case.out
TEST tests/qapi-schema/args-member-array-bad.out
TEST tests/qapi-schema/args-name-clash.out
TEST tests/qapi-schema/args-member-unknown.out
TEST tests/qapi-schema/args-union.out
TEST tests/qapi-schema/args-unknown.out
TEST tests/qapi-schema/bad-base.out
TEST tests/qapi-schema/bad-data.out
TEST tests/qapi-schema/bad-ident.out
TEST tests/qapi-schema/bad-type-bool.out
TEST tests/qapi-schema/bad-type-int.out
TEST tests/qapi-schema/bad-type-dict.out
TEST tests/qapi-schema/base-cycle-direct.out
TEST tests/qapi-schema/base-cycle-indirect.out
TEST tests/qapi-schema/command-int.out
TEST tests/qapi-schema/comments.out
TEST tests/qapi-schema/doc-bad-alternate-member.out
TEST tests/qapi-schema/doc-bad-command-arg.out
TEST tests/qapi-schema/doc-bad-symbol.out
TEST tests/qapi-schema/doc-bad-union-member.out
TEST tests/qapi-schema/doc-before-include.out
TEST tests/qapi-schema/doc-before-pragma.out
TEST tests/qapi-schema/doc-duplicated-arg.out
TEST tests/qapi-schema/doc-duplicated-return.out
TEST tests/qapi-schema/doc-duplicated-since.out
TEST tests/qapi-schema/doc-empty-arg.out
TEST tests/qapi-schema/doc-empty-section.out
TEST tests/qapi-schema/doc-empty-symbol.out
TEST tests/qapi-schema/doc-good.out
TEST tests/qapi-schema/doc-interleaved-section.out
TEST tests/qapi-schema/doc-invalid-end.out
TEST tests/qapi-schema/doc-invalid-end2.out
TEST tests/qapi-schema/doc-invalid-return.out
TEST tests/qapi-schema/doc-invalid-section.out
TEST tests/qapi-schema/doc-invalid-start.out
TEST tests/qapi-schema/doc-missing.out
TEST tests/qapi-schema/doc-missing-colon.out
TEST tests/qapi-schema/doc-missing-expr.out
TEST tests/qapi-schema/doc-missing-space.out
TEST tests/qapi-schema/doc-no-symbol.out
TEST tests/qapi-schema/double-data.out
TEST tests/qapi-schema/double-type.out
TEST tests/qapi-schema/duplicate-key.out
TEST tests/qapi-schema/empty.out
TEST tests/qapi-schema/enum-bad-name.out
TEST tests/qapi-schema/enum-bad-prefix.out
TEST tests/qapi-schema/enum-clash-member.out
TEST tests/qapi-schema/enum-dict-member.out
TEST tests/qapi-schema/enum-int-member.out
TEST tests/qapi-schema/enum-member-case.out
TEST tests/qapi-schema/enum-missing-data.out
TEST tests/qapi-schema/enum-wrong-data.out
TEST tests/qapi-schema/escape-outside-string.out
TEST tests/qapi-schema/escape-too-big.out
TEST tests/qapi-schema/escape-too-short.out
TEST tests/qapi-schema/event-boxed-empty.out
TEST tests/qapi-schema/event-case.out
TEST tests/qapi-schema/flat-union-array-branch.out
TEST tests/qapi-schema/event-nest-struct.out
TEST tests/qapi-schema/flat-union-bad-base.out
TEST tests/qapi-schema/flat-union-bad-discriminator.out
TEST tests/qapi-schema/flat-union-base-any.out
TEST tests/qapi-schema/flat-union-base-union.out
TEST tests/qapi-schema/flat-union-clash-member.out
TEST tests/qapi-schema/flat-union-empty.out
TEST tests/qapi-schema/flat-union-incomplete-branch.out
TEST tests/qapi-schema/flat-union-inline.out
TEST tests/qapi-schema/flat-union-int-branch.out
TEST tests/qapi-schema/flat-union-invalid-branch-key.out
TEST tests/qapi-schema/flat-union-invalid-discriminator.out
TEST tests/qapi-schema/flat-union-no-base.out
TEST tests/qapi-schema/flat-union-optional-discriminator.out
TEST tests/qapi-schema/flat-union-string-discriminator.out
TEST tests/qapi-schema/funny-char.out
TEST tests/qapi-schema/ident-with-escape.out
TEST tests/qapi-schema/include-before-err.out
TEST tests/qapi-schema/include-cycle.out
TEST tests/qapi-schema/include-extra-junk.out
TEST tests/qapi-schema/include-format-err.out
TEST tests/qapi-schema/include-nested-err.out
TEST tests/qapi-schema/include-no-file.out
TEST tests/qapi-schema/include-non-file.out
TEST tests/qapi-schema/include-relpath.out
TEST tests/qapi-schema/include-repetition.out
TEST tests/qapi-schema/include-self-cycle.out
TEST tests/qapi-schema/include-simple.out
TEST tests/qapi-schema/indented-expr.out
TEST tests/qapi-schema/leading-comma-list.out
TEST tests/qapi-schema/leading-comma-object.out
TEST tests/qapi-schema/missing-colon.out
TEST tests/qapi-schema/missing-comma-list.out
TEST tests/qapi-schema/missing-comma-object.out
TEST tests/qapi-schema/missing-type.out
TEST tests/qapi-schema/nested-struct-data.out
TEST tests/qapi-schema/non-objects.out
TEST tests/qapi-schema/pragma-doc-required-crap.out
TEST tests/qapi-schema/pragma-extra-junk.out
TEST tests/qapi-schema/pragma-name-case-whitelist-crap.out
TEST tests/qapi-schema/pragma-non-dict.out
TEST tests/qapi-schema/pragma-returns-whitelist-crap.out
TEST tests/qapi-schema/qapi-schema-test.out
TEST tests/qapi-schema/quoted-structural-chars.out
TEST tests/qapi-schema/redefined-builtin.out
TEST tests/qapi-schema/redefined-command.out
TEST tests/qapi-schema/redefined-event.out
TEST tests/qapi-schema/redefined-type.out
TEST tests/qapi-schema/reserved-command-q.out
TEST tests/qapi-schema/reserved-enum-q.out
TEST tests/qapi-schema/reserved-member-has.out
TEST tests/qapi-schema/reserved-member-q.out
TEST tests/qapi-schema/reserved-member-u.out
TEST tests/qapi-schema/reserved-member-underscore.out
TEST tests/qapi-schema/reserved-type-kind.out
TEST tests/qapi-schema/reserved-type-list.out
TEST tests/qapi-schema/returns-alternate.out
TEST tests/qapi-schema/returns-array-bad.out
TEST tests/qapi-schema/returns-dict.out
TEST tests/qapi-schema/returns-unknown.out
TEST tests/qapi-schema/returns-whitelist.out
TEST tests/qapi-schema/struct-base-clash-deep.out
TEST tests/qapi-schema/struct-base-clash.out
TEST tests/qapi-schema/struct-data-invalid.out
TEST tests/qapi-schema/struct-member-invalid.out
TEST tests/qapi-schema/trailing-comma-list.out
TEST tests/qapi-schema/trailing-comma-object.out
TEST tests/qapi-schema/unclosed-list.out
TEST tests/qapi-schema/type-bypass-bad-gen.out
TEST tests/qapi-schema/unclosed-object.out
TEST tests/qapi-schema/unclosed-string.out
TEST tests/qapi-schema/unicode-str.out
TEST tests/qapi-schema/union-base-empty.out
TEST tests/qapi-schema/union-base-no-discriminator.out
TEST tests/qapi-schema/union-branch-case.out
TEST tests/qapi-schema/union-clash-branches.out
TEST tests/qapi-schema/union-empty.out
TEST tests/qapi-schema/union-invalid-base.out
TEST tests/qapi-schema/union-optional-branch.out
TEST tests/qapi-schema/union-unknown.out
TEST tests/qapi-schema/unknown-escape.out
TEST tests/qapi-schema/unknown-expr-key.out
GEN tests/qapi-schema/doc-good.test.texi
CC tests/check-qdict.o
CC tests/test-char.o
CC tests/check-qnum.o
CC tests/check-qstring.o
CC tests/check-qlist.o
CC tests/check-qnull.o
CC tests/check-qjson.o
CC tests/test-qobject-output-visitor.o
GEN tests/test-qapi-visit.c
GEN tests/test-qapi-types.c
GEN tests/test-qapi-event.c
GEN tests/test-qmp-introspect.c
CC tests/test-clone-visitor.o
CC tests/test-qobject-input-visitor.o
CC tests/test-qmp-commands.o
GEN tests/test-qmp-marshal.c
CC tests/test-string-input-visitor.o
CC tests/test-string-output-visitor.o
CC tests/test-qmp-event.o
CC tests/test-opts-visitor.o
CC tests/test-coroutine.o
CC tests/iothread.o
CC tests/test-visitor-serialization.o
CC tests/test-iov.o
CC tests/test-aio.o
CC tests/test-aio-multithread.o
CC tests/test-throttle.o
CC tests/test-thread-pool.o
CC tests/test-hbitmap.o
CC tests/test-blockjob.o
CC tests/test-blockjob-txn.o
CC tests/test-x86-cpuid.o
CC tests/test-xbzrle.o
CC tests/test-vmstate.o
CC tests/test-cutils.o
CC tests/test-shift128.o
CC tests/test-mul64.o
CC tests/test-int128.o
/tmp/qemu-test/src/tests/test-int128.c:180: warning: ‘__noclone__’ attribute directive ignored
CC tests/rcutorture.o
CC tests/test-rcu-list.o
CC tests/test-qdist.o
CC tests/test-qht.o
CC tests/test-qht-par.o
CC tests/qht-bench.o
CC tests/test-bitops.o
CC tests/test-bitcnt.o
CC tests/check-qom-interface.o
CC tests/check-qom-proplist.o
CC tests/test-qemu-opts.o
CC tests/test-keyval.o
CC tests/test-write-threshold.o
CC tests/test-crypto-hash.o
CC tests/test-crypto-hmac.o
CC tests/test-crypto-cipher.o
CC tests/test-crypto-secret.o
CC tests/test-qga.o
CC tests/libqtest.o
CC tests/test-timed-average.o
CC tests/test-io-task.o
CC tests/test-io-channel-socket.o
CC tests/io-channel-helpers.o
CC tests/test-io-channel-file.o
CC tests/test-io-channel-command.o
CC tests/test-io-channel-buffer.o
CC tests/test-base64.o
CC tests/test-crypto-ivgen.o
CC tests/test-crypto-afsplit.o
CC tests/test-crypto-xts.o
CC tests/test-crypto-block.o
CC tests/test-logging.o
CC tests/test-replication.o
CC tests/test-bufferiszero.o
CC tests/test-uuid.o
CC tests/ptimer-test.o
CC tests/ptimer-test-stubs.o
CC tests/test-qapi-util.o
CC tests/vhost-user-test.o
CC tests/libqos/pci.o
CC tests/libqos/fw_cfg.o
CC tests/libqos/malloc.o
CC tests/libqos/i2c.o
CC tests/libqos/malloc-spapr.o
CC tests/libqos/libqos.o
CC tests/libqos/libqos-spapr.o
CC tests/libqos/rtas.o
CC tests/libqos/pci-spapr.o
CC tests/libqos/pci-pc.o
CC tests/libqos/malloc-pc.o
CC tests/libqos/libqos-pc.o
CC tests/libqos/ahci.o
CC tests/libqos/virtio.o
CC tests/libqos/virtio-pci.o
CC tests/libqos/virtio-mmio.o
CC tests/libqos/malloc-generic.o
CC tests/endianness-test.o
CC tests/fdc-test.o
CC tests/ide-test.o
CC tests/ahci-test.o
CC tests/hd-geo-test.o
CC tests/bios-tables-test.o
CC tests/boot-order-test.o
CC tests/boot-sector.o
CC tests/acpi-utils.o
CC tests/boot-serial-test.o
CC tests/pxe-test.o
CC tests/vhost-user-bridge.o
CC contrib/libvhost-user/libvhost-user.o
CC tests/rtc-test.o
CC tests/ipmi-kcs-test.o
CC tests/i440fx-test.o
CC tests/ipmi-bt-test.o
CC tests/fw_cfg-test.o
CC tests/drive_del-test.o
CC tests/wdt_ib700-test.o
CC tests/tco-test.o
CC tests/e1000e-test.o
CC tests/e1000-test.o
CC tests/rtl8139-test.o
CC tests/pcnet-test.o
CC tests/eepro100-test.o
CC tests/ne2000-test.o
CC tests/nvme-test.o
CC tests/ac97-test.o
CC tests/es1370-test.o
CC tests/virtio-net-test.o
CC tests/virtio-balloon-test.o
CC tests/virtio-blk-test.o
CC tests/virtio-rng-test.o
CC tests/virtio-scsi-test.o
CC tests/virtio-serial-test.o
CC tests/virtio-console-test.o
CC tests/tpci200-test.o
CC tests/ipoctal232-test.o
CC tests/display-vga-test.o
CC tests/intel-hda-test.o
CC tests/ivshmem-test.o
CC tests/megasas-test.o
CC tests/vmxnet3-test.o
CC tests/pvpanic-test.o
CC tests/i82801b11-test.o
CC tests/ioh3420-test.o
CC tests/usb-hcd-ohci-test.o
CC tests/libqos/usb.o
CC tests/usb-hcd-uhci-test.o
CC tests/usb-hcd-ehci-test.o
CC tests/usb-hcd-xhci-test.o
CC tests/pc-cpu-test.o
CC tests/q35-test.o
CC tests/vmgenid-test.o
CC tests/test-netfilter.o
CC tests/test-filter-mirror.o
CC tests/test-filter-redirector.o
CC tests/postcopy-test.o
/tmp/qemu-test/src/tests/pxe-test.c: In function ‘test_pxe_vhost_user’:
/tmp/qemu-test/src/tests/pxe-test.c:97: error: ‘G_SPAWN_SEARCH_PATH_FROM_ENVP’ undeclared (first use in this function)
/tmp/qemu-test/src/tests/pxe-test.c:97: error: (Each undeclared identifier is reported only once
/tmp/qemu-test/src/tests/pxe-test.c:97: error: for each function it appears in.)
make: *** [tests/pxe-test.o] Error 1
make: *** Waiting for unfinished jobs....
CC tests/test-x86-cpuid-compat.o
CC tests/numa-test.o
tests/docker/Makefile.include:122: recipe for target 'docker-run' failed
make[1]: *** [docker-run] Error 2
make[1]: Leaving directory '/var/tmp/patchew-tester-tmp-2sgtaygz/src'
tests/docker/Makefile.include:153: recipe for target 'docker-run-test-quick@centos6' failed
make: *** [docker-run-test-quick@centos6] Error 2
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default Jens Freimann
@ 2017-07-12 14:57 ` Maxime Coquelin
0 siblings, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2017-07-12 14:57 UTC (permalink / raw)
To: Jens Freimann, qemu-devel; +Cc: marcandre.lureau, mst, victork
On 07/12/2017 11:41 AM, Jens Freimann wrote:
> From: Jens Freimann <jfreiman@redhat.com>
>
> vhost-user-bridge prints out a lot of information, including dumps
> of all transmitted data. When called from a testcase this output
> clutters the actual test results, so let's make the default no debug
> output.
>
> Signed-off-by: Jens Freimann <jfreiman@redhat.com>
> ---
> tests/vhost-user-bridge.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Makes sense to have debug logs disabled by default.
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Thanks,
Maxime
> diff --git a/tests/vhost-user-bridge.c b/tests/vhost-user-bridge.c
> index 1e5b5ca..93d9535 100644
> --- a/tests/vhost-user-bridge.c
> +++ b/tests/vhost-user-bridge.c
> @@ -34,7 +34,7 @@
> #include "standard-headers/linux/virtio_net.h"
> #include "contrib/libvhost-user/libvhost-user.h"
>
> -#define VHOST_USER_BRIDGE_DEBUG 1
> +#define VHOST_USER_BRIDGE_DEBUG 0
>
> #define DPRINT(...) \
> do { \
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
` (4 preceding siblings ...)
2017-07-12 12:37 ` no-reply
@ 2017-07-12 15:10 ` Michael S. Tsirkin
2017-07-12 21:13 ` Jens Freimann
5 siblings, 1 reply; 17+ messages in thread
From: Michael S. Tsirkin @ 2017-07-12 15:10 UTC (permalink / raw)
To: Jens Freimann; +Cc: qemu-devel, marcandre.lureau, victork, maxime.coquelin
On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
> This implements a testcase for pxe-test using the vhost-user interface. Spawn a
> vhost-user-bridge process and connect it to the qemu process.
>
> It is send as an RFC because:
> - Patch 3/3: there must be cleaner way to do this.
> - Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
> - don't hardcode port numbers in qemu cmdline, create socket and pass
> fd to -netdev (need to figure out how to do this)
Doesn't this work?
-netdev socket,id=str[,fd=h]
> Jens Freimann (3):
> tests/vhost-user-bridge: disable debug output by default
> tests/pxe-test: add testcase using vhost-user-bridge
> libvhost-user: quit when no more data received
>
> contrib/libvhost-user/libvhost-user.c | 12 +++-
> contrib/libvhost-user/libvhost-user.h | 1 +
> tests/Makefile.include | 4 +-
> tests/pxe-test.c | 106 +++++++++++++++++++++++++++++++++-
> tests/vhost-user-bridge.c | 2 +-
> 5 files changed, 121 insertions(+), 4 deletions(-)
>
> --
> 2.9.4
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge Jens Freimann
@ 2017-07-12 15:39 ` Maxime Coquelin
2017-07-12 15:45 ` Jens Freimann
0 siblings, 1 reply; 17+ messages in thread
From: Maxime Coquelin @ 2017-07-12 15:39 UTC (permalink / raw)
To: Jens Freimann, qemu-devel; +Cc: marcandre.lureau, mst, victork
On 07/12/2017 11:41 AM, Jens Freimann wrote:
> From: Jens Freimann <jfreiman@redhat.com>
>
> Add a test to pxe-test using the vhost-user interface.
> Create a vhost-user-bridge process and connect it to qemu.
>
> Signed-off-by: Jens Freimann <jfreimann@redhat.com>
> ---
> tests/Makefile.include | 4 +-
> tests/pxe-test.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++-
> 2 files changed, 108 insertions(+), 2 deletions(-)
>
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index 18cd06a..eccb27e 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -698,7 +698,8 @@ tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
> tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
> tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
> tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
> -tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
> +tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o \
> + tests/vhost-user-bridge$(EXESUF) $(libqos-obj-y)
> tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
> tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
> tests/m25p80-test$(EXESUF): tests/m25p80-test.o
> @@ -826,6 +827,7 @@ $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
> QTEST_QEMU_IMG=qemu-img$(EXESUF) \
> + QTEST_VUBR_BINARY=./tests/vhost-user-bridge$(EXESUF) \
> MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER","$@")
> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y) $(gcov-files-generic-y); do \
> diff --git a/tests/pxe-test.c b/tests/pxe-test.c
> index 34282d3..5a0d182 100644
> --- a/tests/pxe-test.c
> +++ b/tests/pxe-test.c
> @@ -5,7 +5,8 @@
> *
> * Authors:
> * Michael S. Tsirkin <mst@redhat.com>,
> - * Victor Kaplansky <victork@redhat.com>
> + * Victor Kaplansky <victork@redhat.com>,
> + * Jens Freimann <jfreiman@redhat.com>
> *
> * This work is licensed under the terms of the GNU GPL, version 2 or later.
> * See the COPYING file in the top-level directory.
> @@ -13,13 +14,115 @@
>
> #include "qemu/osdep.h"
> #include <glib/gstdio.h>
> +#include <glib.h>
> #include "qemu-common.h"
> #include "libqtest.h"
> #include "boot-sector.h"
> +#include <sys/vfs.h>
>
> +#define LPORT 5555
> +#define RPORT 4444
> #define NETNAME "net0"
> +#define QEMU_CMD_MEM "--enable-kvm -m %d -object memory-backend-file,id=mem,size=%dM,"\
> + "mem-path=%s,share=on -numa node,memdev=mem -mem-prealloc "
> +#define QEMU_CMD_CHR " -chardev socket,id=%s,path=%s"
> +#define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
> + " -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
> + " -netdev user,id=n0,tftp=./,bootfile=%s "\
> + " -netdev socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
> +#define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
> + " -device virtio-net-pci,netdev=n1 "
> +
> +#define QEMU_CMD QEMU_CMD_MEM QEMU_CMD_CHR \
> + QEMU_CMD_NETDEV QEMU_CMD_NET
> +
> +#define HUGETLBFS_MAGIC 0x958458f6
> +#define VUBR_SOCK "vubr.sock"
> +#define MEMSZ 1024
>
> static char disk[] = "tests/pxe-test-disk-XXXXXX";
> +static const char *root;
> +static const char *tmpfs;
> +static const char *tmpfs2;
Can't these be declared directly in test_pxe_vhost_user()?
> +
> +static const char *init_hugepagefs(const char *path)
> +{
> + struct statfs fs;
> + int ret;
> +
> + if (access(path, R_OK | W_OK | X_OK)) {
> + g_test_message("access on path (%s): %s\n", path, strerror(errno));
> + return NULL;
> + }
> +
> + do {
> + ret = statfs(path, &fs);
> + } while (ret != 0 && errno == EINTR);
> +
> + if (ret != 0) {
> + g_test_message("statfs on path (%s): %s\n", path, strerror(errno));
> + return NULL;
> + }
> +
> + if (fs.f_type != HUGETLBFS_MAGIC) {
> + g_test_message("Warning: path not on HugeTLBFS: %s\n", path);
> + return NULL;
> + }
> +
> + return path;
> +}
> +
> +static void test_pxe_vhost_user(void)
> +{
> + char template[] = "/tmp/vhost-user-bridge-XXXXXX";
> + char template2[] = "/tmp/hugepages-XXXXXX";
> + gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
> + const char *hugefs;
> + GError *error = NULL;
> + char *vubr_binary;
> + char *qemu_args;
> + GPid vubr_pid;
> +
> + tmpfs = mkdtemp(template);
> + if (!tmpfs) {
> + g_test_message("mkdtemp on path(%s): %s\n",
> + template, strerror(errno));
> + }
> + vubr_binary = getenv("QTEST_VUBR_BINARY");
> + g_assert(vubr_binary);
> + vubr_args[0] = g_strdup_printf("%s", vubr_binary);
> + vubr_args[1] = g_strdup_printf("-u");
> + vubr_args[2] = g_strdup_printf("%s/%s", tmpfs, VUBR_SOCK);
> + g_spawn_async(NULL, vubr_args, NULL,
> + G_SPAWN_SEARCH_PATH_FROM_ENVP |
> + G_SPAWN_SEARCH_PATH,
> + NULL, NULL, &vubr_pid, &error);
> + g_assert_no_error(error);
> +
> + hugefs = getenv("QTEST_HUGETLBFS_PATH");
> + if (hugefs) {
> + root = init_hugepagefs(hugefs);
> + g_assert(root);
> + } else {
> + tmpfs2 = mkdtemp(template2);
> + g_assert(tmpfs2);
> + root = tmpfs2;
> + }
> +
> + qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
> + "char0", vubr_args[2], "char0", disk,
> + RPORT, LPORT);
> + qtest_start(qemu_args);
> + boot_sector_test();
> + qtest_quit(global_qtest);
> + g_free(qemu_args);
> + g_free(vubr_args[0]);
> + g_free(vubr_args[1]);
> + g_free(vubr_args[2]);
> + g_assert_cmpint (g_remove(g_strdup_printf("%s/%s", tmpfs,VUBR_SOCK)),
> + ==, 0);
> + g_assert_cmpint(rmdir(tmpfs), ==, 0);
If created, shouldn't tmpfs2 be cleaned here too?
> +}
>
> static void test_pxe_one(const char *params, bool ipv6)
> {
> @@ -65,6 +168,7 @@ int main(int argc, char *argv[])
> if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
> qtest_add_func("pxe/e1000", test_pxe_e1000);
> qtest_add_func("pxe/virtio", test_pxe_virtio_pci);
> + qtest_add_func("pxe/vhost-user", test_pxe_vhost_user);
> } else if (strcmp(arch, "ppc64") == 0) {
> qtest_add_func("pxe/virtio", test_pxe_virtio_pci);
> qtest_add_func("pxe/spapr-vlan", test_pxe_spapr_vlan);
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge
2017-07-12 15:39 ` Maxime Coquelin
@ 2017-07-12 15:45 ` Jens Freimann
0 siblings, 0 replies; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 15:45 UTC (permalink / raw)
To: Maxime Coquelin; +Cc: qemu-devel, marcandre.lureau, mst, victork
On Wed, Jul 12, 2017 at 05:39:31PM +0200, Maxime Coquelin wrote:
>
>
>On 07/12/2017 11:41 AM, Jens Freimann wrote:
>>From: Jens Freimann <jfreiman@redhat.com>
>>
>>Add a test to pxe-test using the vhost-user interface.
>>Create a vhost-user-bridge process and connect it to qemu.
>>
>>Signed-off-by: Jens Freimann <jfreimann@redhat.com>
>>---
>> tests/Makefile.include | 4 +-
>> tests/pxe-test.c | 106 ++++++++++++++++++++++++++++++++++++++++++++++++-
>> 2 files changed, 108 insertions(+), 2 deletions(-)
>>
>>diff --git a/tests/Makefile.include b/tests/Makefile.include
>>index 18cd06a..eccb27e 100644
>>--- a/tests/Makefile.include
>>+++ b/tests/Makefile.include
>>@@ -698,7 +698,8 @@ tests/boot-order-test$(EXESUF): tests/boot-order-test.o $(libqos-obj-y)
>> tests/boot-serial-test$(EXESUF): tests/boot-serial-test.o $(libqos-obj-y)
>> tests/bios-tables-test$(EXESUF): tests/bios-tables-test.o \
>> tests/boot-sector.o tests/acpi-utils.o $(libqos-obj-y)
>>-tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o $(libqos-obj-y)
>>+tests/pxe-test$(EXESUF): tests/pxe-test.o tests/boot-sector.o \
>>+ tests/vhost-user-bridge$(EXESUF) $(libqos-obj-y)
>> tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
>> tests/ds1338-test$(EXESUF): tests/ds1338-test.o $(libqos-imx-obj-y)
>> tests/m25p80-test$(EXESUF): tests/m25p80-test.o
>>@@ -826,6 +827,7 @@ $(patsubst %, check-qtest-%, $(QTEST_TARGETS)): check-qtest-%: $(check-qtest-y)
>> $(if $(CONFIG_GCOV),@rm -f *.gcda */*.gcda */*/*.gcda */*/*/*.gcda,)
>> $(call quiet-command,QTEST_QEMU_BINARY=$*-softmmu/qemu-system-$* \
>> QTEST_QEMU_IMG=qemu-img$(EXESUF) \
>>+ QTEST_VUBR_BINARY=./tests/vhost-user-bridge$(EXESUF) \
>> MALLOC_PERTURB_=$${MALLOC_PERTURB_:-$$((RANDOM % 255 + 1))} \
>> gtester $(GTESTER_OPTIONS) -m=$(SPEED) $(check-qtest-$*-y) $(check-qtest-generic-y),"GTESTER","$@")
>> $(if $(CONFIG_GCOV),@for f in $(gcov-files-$*-y) $(gcov-files-generic-y); do \
>>diff --git a/tests/pxe-test.c b/tests/pxe-test.c
>>index 34282d3..5a0d182 100644
>>--- a/tests/pxe-test.c
>>+++ b/tests/pxe-test.c
>>@@ -5,7 +5,8 @@
>> *
>> * Authors:
>> * Michael S. Tsirkin <mst@redhat.com>,
>>- * Victor Kaplansky <victork@redhat.com>
>>+ * Victor Kaplansky <victork@redhat.com>,
>>+ * Jens Freimann <jfreiman@redhat.com>
>> *
>> * This work is licensed under the terms of the GNU GPL, version 2 or later.
>> * See the COPYING file in the top-level directory.
>>@@ -13,13 +14,115 @@
>> #include "qemu/osdep.h"
>> #include <glib/gstdio.h>
>>+#include <glib.h>
>> #include "qemu-common.h"
>> #include "libqtest.h"
>> #include "boot-sector.h"
>>+#include <sys/vfs.h>
>>+#define LPORT 5555
>>+#define RPORT 4444
>> #define NETNAME "net0"
>>+#define QEMU_CMD_MEM "--enable-kvm -m %d -object memory-backend-file,id=mem,size=%dM,"\
>>+ "mem-path=%s,share=on -numa node,memdev=mem -mem-prealloc "
>>+#define QEMU_CMD_CHR " -chardev socket,id=%s,path=%s"
>>+#define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
>>+ " -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
>>+ " -netdev user,id=n0,tftp=./,bootfile=%s "\
>>+ " -netdev socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
>>+#define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
>>+ " -device virtio-net-pci,netdev=n1 "
>>+
>>+#define QEMU_CMD QEMU_CMD_MEM QEMU_CMD_CHR \
>>+ QEMU_CMD_NETDEV QEMU_CMD_NET
>>+
>>+#define HUGETLBFS_MAGIC 0x958458f6
>>+#define VUBR_SOCK "vubr.sock"
>>+#define MEMSZ 1024
>> static char disk[] = "tests/pxe-test-disk-XXXXXX";
>>+static const char *root;
>>+static const char *tmpfs;
>>+static const char *tmpfs2;
>Can't these be declared directly in test_pxe_vhost_user()?
I think they can.
>>+
>>+static const char *init_hugepagefs(const char *path)
>>+{
>>+ struct statfs fs;
>>+ int ret;
>>+
>>+ if (access(path, R_OK | W_OK | X_OK)) {
>>+ g_test_message("access on path (%s): %s\n", path, strerror(errno));
>>+ return NULL;
>>+ }
>>+
>>+ do {
>>+ ret = statfs(path, &fs);
>>+ } while (ret != 0 && errno == EINTR);
>>+
>>+ if (ret != 0) {
>>+ g_test_message("statfs on path (%s): %s\n", path, strerror(errno));
>>+ return NULL;
>>+ }
>>+
>>+ if (fs.f_type != HUGETLBFS_MAGIC) {
>>+ g_test_message("Warning: path not on HugeTLBFS: %s\n", path);
>>+ return NULL;
>>+ }
>>+
>>+ return path;
>>+}
>>+
>>+static void test_pxe_vhost_user(void)
>>+{
>>+ char template[] = "/tmp/vhost-user-bridge-XXXXXX";
>>+ char template2[] = "/tmp/hugepages-XXXXXX";
>>+ gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
>>+ const char *hugefs;
>>+ GError *error = NULL;
>>+ char *vubr_binary;
>>+ char *qemu_args;
>>+ GPid vubr_pid;
>>+
>>+ tmpfs = mkdtemp(template);
>>+ if (!tmpfs) {
>>+ g_test_message("mkdtemp on path(%s): %s\n",
>>+ template, strerror(errno));
>>+ }
>>+ vubr_binary = getenv("QTEST_VUBR_BINARY");
>>+ g_assert(vubr_binary);
>>+ vubr_args[0] = g_strdup_printf("%s", vubr_binary);
>>+ vubr_args[1] = g_strdup_printf("-u");
>>+ vubr_args[2] = g_strdup_printf("%s/%s", tmpfs, VUBR_SOCK);
>>+ g_spawn_async(NULL, vubr_args, NULL,
>>+ G_SPAWN_SEARCH_PATH_FROM_ENVP |
>>+ G_SPAWN_SEARCH_PATH,
>>+ NULL, NULL, &vubr_pid, &error);
>>+ g_assert_no_error(error);
>>+
>>+ hugefs = getenv("QTEST_HUGETLBFS_PATH");
>>+ if (hugefs) {
>>+ root = init_hugepagefs(hugefs);
>>+ g_assert(root);
>>+ } else {
>>+ tmpfs2 = mkdtemp(template2);
>>+ g_assert(tmpfs2);
>>+ root = tmpfs2;
>>+ }
>>+
>>+ qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
>>+ "char0", vubr_args[2], "char0", disk,
>>+ RPORT, LPORT);
>>+ qtest_start(qemu_args);
>>+ boot_sector_test();
>>+ qtest_quit(global_qtest);
>>+ g_free(qemu_args);
>>+ g_free(vubr_args[0]);
>>+ g_free(vubr_args[1]);
>>+ g_free(vubr_args[2]);
>>+ g_assert_cmpint (g_remove(g_strdup_printf("%s/%s", tmpfs,VUBR_SOCK)),
>>+ ==, 0);
>>+ g_assert_cmpint(rmdir(tmpfs), ==, 0);
>If created, shouldn't tmpfs2 be cleaned here too?
You're right. I'll add this in the next version.
Thanks for the review!
regards,
Jens
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received Jens Freimann
@ 2017-07-12 16:05 ` Maxime Coquelin
2017-07-13 16:01 ` Marc-André Lureau
1 sibling, 0 replies; 17+ messages in thread
From: Maxime Coquelin @ 2017-07-12 16:05 UTC (permalink / raw)
To: Jens Freimann, qemu-devel; +Cc: marcandre.lureau, mst, victork
On 07/12/2017 11:41 AM, Jens Freimann wrote:
> From: Jens Freimann<jfreiman@redhat.com>
>
> When recvmsg() returns a message size of zero and
> errno is ENOENT end processing of vhost-user messages.
>
> Without this we run into a vubr_panic() call and get
> PANIC: Error while recvmsg: No such file or directory
> Error while dispatching.
>
> Add a switch "quit" to the vhost user device and set true to stop
> processing messages.
>
> Signed-off-by: Jens Freimann<jfreiman@redhat.com>
> ---
> contrib/libvhost-user/libvhost-user.c | 12 +++++++++++-
> contrib/libvhost-user/libvhost-user.h | 1 +
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
> index 9efb9da..5538859 100644
> --- a/contrib/libvhost-user/libvhost-user.c
> +++ b/contrib/libvhost-user/libvhost-user.c
> @@ -161,7 +161,10 @@ vu_message_read(VuDev *dev, int conn_fd, VhostUserMsg *vmsg)
> rc = recvmsg(conn_fd, &msg, 0);
> } while (rc < 0 && (errno == EINTR || errno == EAGAIN));
>
> - if (rc <= 0) {
> + if (rc == 0 && (errno == ENOENT)) {
> + vmsg->size = 0;
> + dev->quit = true;
> + } else if (rc < 0) {
> vu_panic(dev, "Error while recvmsg: %s", strerror(errno));
> return false;
> }
> @@ -755,6 +758,10 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
> DPRINT("Flags: 0x%x\n", vmsg->flags);
> DPRINT("Size: %d\n", vmsg->size);
>
> + if (dev->quit) {
> + return true;
> + }
> +
You may want to return false here, as true means a reply is requested?
Maxime
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 15:10 ` Michael S. Tsirkin
@ 2017-07-12 21:13 ` Jens Freimann
2017-07-12 22:33 ` Michael S. Tsirkin
0 siblings, 1 reply; 17+ messages in thread
From: Jens Freimann @ 2017-07-12 21:13 UTC (permalink / raw)
To: Michael S. Tsirkin; +Cc: qemu-devel, marcandre.lureau, victork, maxime.coquelin
On Wed, Jul 12, 2017 at 06:10:05PM +0300, Michael S. Tsirkin wrote:
>On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
>> This implements a testcase for pxe-test using the vhost-user interface. Spawn a
>> vhost-user-bridge process and connect it to the qemu process.
>>
>> It is send as an RFC because:
>> - Patch 3/3: there must be cleaner way to do this.
>> - Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
>> - don't hardcode port numbers in qemu cmdline, create socket and pass
>> fd to -netdev (need to figure out how to do this)
>
>Doesn't this work?
>
>-netdev socket,id=str[,fd=h]
It should. But I get this:
dded sock 5 for watching. max_sock: 5
Sock 3 removed from dispatcher watch.
qemu: error: specified mcastaddr "127.0.0.1" (0x7f000001) does not contain a multicast address
qemu-system-x86_64: -netdev socket,id=n1,fd=3: Device 'socket' could not be initialized
Broken pipe
diff --git a/tests/pxe-test.c b/tests/pxe-test.c
index 5a0d182..a14c1d9 100644
--- a/tests/pxe-test.c
+++ b/tests/pxe-test.c
@@ -29,7 +29,7 @@
#define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
" -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
" -netdev user,id=n0,tftp=./,bootfile=%s "\
- " -netdev socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
+ " -netdev socket,id=n1,fd=%d"
#define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
" -device virtio-net-pci,netdev=n1 "
@@ -72,16 +72,42 @@ static const char *init_hugepagefs(const char *path)
return path;
}
+static int vubr_create_socket(struct sockaddr_in *si_remote, int rport)
+{
+ int sock = -1;
+
+ if (inet_aton("127.0.0.1", (struct in_addr *) &si_remote->sin_addr.s_addr) == 0) {
+ g_test_message("inet_aton failed\n");
+ return -1;
+ }
+
+ sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (sock == -1) {
+ g_test_message("socket creation failed\n");
+ }
+ if (connect(sock, (struct sockaddr *) si_remote, sizeof(*si_remote))) {
+ printf("connect, %d", errno);
+ return -1;
+ }
+
+ return sock;
+}
+
static void test_pxe_vhost_user(void)
{
char template[] = "/tmp/vhost-user-bridge-XXXXXX";
char template2[] = "/tmp/hugepages-XXXXXX";
gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
+ struct sockaddr_in si_remote = {
+ .sin_family = AF_INET,
+ .sin_port = htons(RPORT),
+ };
const char *hugefs;
GError *error = NULL;
char *vubr_binary;
char *qemu_args;
GPid vubr_pid;
+ int sock = -1;
tmpfs = mkdtemp(template);
if (!tmpfs) {
tmpfs = mkdtemp(template);
if (!tmpfs) {
@@ -109,9 +135,10 @@ static void test_pxe_vhost_user(void)
root = tmpfs2;
}
+ sock = vubr_create_socket(&si_remote, RPORT);
+
qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
- "char0", vubr_args[2], "char0", disk,
- RPORT, LPORT);
+ "char0", vubr_args[2], "char0", disk, sock);
regards,
Jens
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 21:13 ` Jens Freimann
@ 2017-07-12 22:33 ` Michael S. Tsirkin
2017-07-19 8:44 ` Stefan Hajnoczi
0 siblings, 1 reply; 17+ messages in thread
From: Michael S. Tsirkin @ 2017-07-12 22:33 UTC (permalink / raw)
To: Jens Freimann; +Cc: qemu-devel, marcandre.lureau, victork, maxime.coquelin
On Wed, Jul 12, 2017 at 11:13:05PM +0200, Jens Freimann wrote:
> On Wed, Jul 12, 2017 at 06:10:05PM +0300, Michael S. Tsirkin wrote:
> > On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
> > > This implements a testcase for pxe-test using the vhost-user interface. Spawn a
> > > vhost-user-bridge process and connect it to the qemu process.
> > >
> > > It is send as an RFC because:
> > > - Patch 3/3: there must be cleaner way to do this.
> > > - Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
> > > - don't hardcode port numbers in qemu cmdline, create socket and pass
> > > fd to -netdev (need to figure out how to do this)
> >
> > Doesn't this work?
> >
> > -netdev socket,id=str[,fd=h]
>
> It should. But I get this:
>
> dded sock 5 for watching. max_sock: 5
> Sock 3 removed from dispatcher watch.
> qemu: error: specified mcastaddr "127.0.0.1" (0x7f000001) does not contain a multicast address
> qemu-system-x86_64: -netdev socket,id=n1,fd=3: Device 'socket' could not be initialized
> Broken pipe
Not sure what's wrong with it, should not be too hard to debug.
Or maybe we should add unix domain socket support.
Sounds like a reasonable feature to me.
> diff --git a/tests/pxe-test.c b/tests/pxe-test.c
> index 5a0d182..a14c1d9 100644
> --- a/tests/pxe-test.c
> +++ b/tests/pxe-test.c
> @@ -29,7 +29,7 @@
> #define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
> " -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
> " -netdev user,id=n0,tftp=./,bootfile=%s "\
> - " -netdev socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
> + " -netdev socket,id=n1,fd=%d"
> #define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
> " -device virtio-net-pci,netdev=n1 "
>
> @@ -72,16 +72,42 @@ static const char *init_hugepagefs(const char *path)
> return path;
> }
>
> +static int vubr_create_socket(struct sockaddr_in *si_remote, int rport)
> +{
> + int sock = -1;
> +
> + if (inet_aton("127.0.0.1", (struct in_addr *) &si_remote->sin_addr.s_addr) == 0) {
> + g_test_message("inet_aton failed\n");
> + return -1;
> + }
> +
> + sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
> + if (sock == -1) {
> + g_test_message("socket creation failed\n");
> + }
> + if (connect(sock, (struct sockaddr *) si_remote, sizeof(*si_remote))) {
> + printf("connect, %d", errno);
> + return -1;
> + }
> +
> + return sock;
> +}
> +
> static void test_pxe_vhost_user(void)
> {
> char template[] = "/tmp/vhost-user-bridge-XXXXXX";
> char template2[] = "/tmp/hugepages-XXXXXX";
> gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
> + struct sockaddr_in si_remote = {
> + .sin_family = AF_INET,
> + .sin_port = htons(RPORT),
> + };
> const char *hugefs;
> GError *error = NULL;
> char *vubr_binary;
> char *qemu_args;
> GPid vubr_pid;
> + int sock = -1;
>
> tmpfs = mkdtemp(template);
> if (!tmpfs) {
>
> tmpfs = mkdtemp(template);
> if (!tmpfs) {
> @@ -109,9 +135,10 @@ static void test_pxe_vhost_user(void)
> root = tmpfs2;
> }
>
> + sock = vubr_create_socket(&si_remote, RPORT);
> +
> qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
> - "char0", vubr_args[2], "char0", disk,
> - RPORT, LPORT);
> + "char0", vubr_args[2], "char0", disk, sock);
>
>
>
> regards,
> Jens
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received Jens Freimann
2017-07-12 16:05 ` Maxime Coquelin
@ 2017-07-13 16:01 ` Marc-André Lureau
2017-07-14 10:12 ` Jens Freimann
1 sibling, 1 reply; 17+ messages in thread
From: Marc-André Lureau @ 2017-07-13 16:01 UTC (permalink / raw)
To: Jens Freimann, qemu-devel; +Cc: maxime.coquelin, victork, mst
Hi
On Wed, Jul 12, 2017 at 1:47 PM Jens Freimann <jfreimann@redhat.com> wrote:
> From: Jens Freimann <jfreiman@redhat.com>
>
> When recvmsg() returns a message size of zero and
> errno is ENOENT end processing of vhost-user messages.
>
> Without this we run into a vubr_panic() call and get
> PANIC: Error while recvmsg: No such file or directory
> Error while dispatching.
>
>
How do you get ENOENT on recvmsg()?
Add a switch "quit" to the vhost user device and set true to stop
> processing messages.
>
> Signed-off-by: Jens Freimann <jfreiman@redhat.com>
> ---
> contrib/libvhost-user/libvhost-user.c | 12 +++++++++++-
> contrib/libvhost-user/libvhost-user.h | 1 +
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/libvhost-user/libvhost-user.c
> b/contrib/libvhost-user/libvhost-user.c
> index 9efb9da..5538859 100644
> --- a/contrib/libvhost-user/libvhost-user.c
> +++ b/contrib/libvhost-user/libvhost-user.c
> @@ -161,7 +161,10 @@ vu_message_read(VuDev *dev, int conn_fd, VhostUserMsg
> *vmsg)
> rc = recvmsg(conn_fd, &msg, 0);
> } while (rc < 0 && (errno == EINTR || errno == EAGAIN));
>
> - if (rc <= 0) {
> + if (rc == 0 && (errno == ENOENT)) {
> + vmsg->size = 0;
> + dev->quit = true;
> + } else if (rc < 0) {
> vu_panic(dev, "Error while recvmsg: %s", strerror(errno));
> return false;
> }
> @@ -755,6 +758,10 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
> DPRINT("Flags: 0x%x\n", vmsg->flags);
> DPRINT("Size: %d\n", vmsg->size);
>
> + if (dev->quit) {
> + return true;
> + }
>
Make it false, as no reply is expected then
> +
> if (vmsg->fd_num) {
> int i;
> DPRINT("Fds:");
> @@ -822,6 +829,9 @@ vu_dispatch(VuDev *dev)
> bool success = false;
>
> if (!vu_message_read(dev, dev->sock, &vmsg)) {
> + if (vmsg.size == 0) {
> + success = true;
> + }
>
There might be better ways to indicate a disconnection than modifying and
checking vmsg.size. Perhaps dev->quit alone is enough?
goto end;
> }
>
> diff --git a/contrib/libvhost-user/libvhost-user.h
> b/contrib/libvhost-user/libvhost-user.h
> index 53ef222..c02215a 100644
> --- a/contrib/libvhost-user/libvhost-user.h
> +++ b/contrib/libvhost-user/libvhost-user.h
> @@ -217,6 +217,7 @@ struct VuDev {
> uint64_t features;
> uint64_t protocol_features;
> bool broken;
> + bool quit;
>
I also think you could re-use broken in this case.
>
> /* @set_watch: add or update the given fd to the watch set,
> * call cb when condition is met */
> --
> 2.9.4
>
>
> --
Marc-André Lureau
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received
2017-07-13 16:01 ` Marc-André Lureau
@ 2017-07-14 10:12 ` Jens Freimann
0 siblings, 0 replies; 17+ messages in thread
From: Jens Freimann @ 2017-07-14 10:12 UTC (permalink / raw)
To: Marc-André Lureau; +Cc: qemu-devel, maxime.coquelin, victork, mst
On Thu, Jul 13, 2017 at 04:01:34PM +0000, Marc-André Lureau wrote:
>Hi
>
>On Wed, Jul 12, 2017 at 1:47 PM Jens Freimann <jfreimann@redhat.com> wrote:
>
>> From: Jens Freimann <jfreiman@redhat.com>
>>
>> When recvmsg() returns a message size of zero and
>> errno is ENOENT end processing of vhost-user messages.
The man page says that zero-length messages indicate a orderly
shutdown for stream sockets, but for datagram sockets they are
permitted as normal messages. So technically quitting when receiving
a zero-length packet is not correct here.
I found I can replace this entire patch with this hunk:
@@ -812,6 +812,8 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
return vu_get_queue_num_exec(dev, vmsg);
case VHOST_USER_SET_VRING_ENABLE:
return vu_set_vring_enable_exec(dev, vmsg);
+ case VHOST_USER_NONE:
+ return true;
default:
vmsg_close_fds(vmsg);
vu_panic(dev, "Unhandled
request: %d",
vmsg->request);
This works, because vmsg is initialzed to all zeros. When we read a
message of length zero, vmsg->request is 0, which is VHOST_USER_NONE.
Would this be acceptable?
>>
>> Without this we run into a vubr_panic() call and get
>> PANIC: Error while recvmsg: No such file or directory
>> Error while dispatching.
>>
>>
>How do you get ENOENT on recvmsg()?
I don't. I looked at errno when the return code of recvmsg() was 0,
but errno is only set in case of an error. So it is has no meaning
regarding recvmsg().
>Add a switch "quit" to the vhost user device and set true to stop
>> processing messages.
>>
>> Signed-off-by: Jens Freimann <jfreiman@redhat.com>
>> ---
>> contrib/libvhost-user/libvhost-user.c | 12 +++++++++++-
>> contrib/libvhost-user/libvhost-user.h | 1 +
>> 2 files changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/contrib/libvhost-user/libvhost-user.c
>> b/contrib/libvhost-user/libvhost-user.c
>> index 9efb9da..5538859 100644
>> --- a/contrib/libvhost-user/libvhost-user.c
>> +++ b/contrib/libvhost-user/libvhost-user.c
>> @@ -161,7 +161,10 @@ vu_message_read(VuDev *dev, int conn_fd, VhostUserMsg
>> *vmsg)
>> rc = recvmsg(conn_fd, &msg, 0);
>> } while (rc < 0 && (errno == EINTR || errno == EAGAIN));
>>
>> - if (rc <= 0) {
>> + if (rc == 0 && (errno == ENOENT)) {
>> + vmsg->size = 0;
>> + dev->quit = true;
>> + } else if (rc < 0) {
>> vu_panic(dev, "Error while recvmsg: %s", strerror(errno));
>> return false;
>> }
>> @@ -755,6 +758,10 @@ vu_process_message(VuDev *dev, VhostUserMsg *vmsg)
>> DPRINT("Flags: 0x%x\n", vmsg->flags);
>> DPRINT("Size: %d\n", vmsg->size);
>>
>> + if (dev->quit) {
>> + return true;
>> + }
>>
>
>Make it false, as no reply is expected then
ok
>
>
>> +
>> if (vmsg->fd_num) {
>> int i;
>> DPRINT("Fds:");
>> @@ -822,6 +829,9 @@ vu_dispatch(VuDev *dev)
>> bool success = false;
>>
>> if (!vu_message_read(dev, dev->sock, &vmsg)) {
>> + if (vmsg.size == 0) {
>> + success = true;
>> + }
>>
>
>There might be better ways to indicate a disconnection than modifying and
>checking vmsg.size. Perhaps dev->quit alone is enough?
yes, it is enough. I'll change it.
>
> goto end;
>> }
>>
>> diff --git a/contrib/libvhost-user/libvhost-user.h
>> b/contrib/libvhost-user/libvhost-user.h
>> index 53ef222..c02215a 100644
>> --- a/contrib/libvhost-user/libvhost-user.h
>> +++ b/contrib/libvhost-user/libvhost-user.h
>> @@ -217,6 +217,7 @@ struct VuDev {
>> uint64_t features;
>> uint64_t protocol_features;
>> bool broken;
>> + bool quit;
>>
>
>I also think you could re-use broken in this case.
I could use broken, it just felt wrong because in this case the device
is not broken, we just want to quit receiving messages because there is
no more data to be received. But if this is not enough to justify a
new variable, I'm fine with using broken.
Thanks for the review!
regards,
Jens
>
>>
>> /* @set_watch: add or update the given fd to the watch set,
>> * call cb when condition is met */
>> --
>> 2.9.4
>>
>>
>> --
>Marc-André Lureau
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-12 22:33 ` Michael S. Tsirkin
@ 2017-07-19 8:44 ` Stefan Hajnoczi
2017-07-19 15:51 ` Jens Freimann
0 siblings, 1 reply; 17+ messages in thread
From: Stefan Hajnoczi @ 2017-07-19 8:44 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: Jens Freimann, marcandre.lureau, maxime.coquelin, victork, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1891 bytes --]
On Thu, Jul 13, 2017 at 01:33:43AM +0300, Michael S. Tsirkin wrote:
> On Wed, Jul 12, 2017 at 11:13:05PM +0200, Jens Freimann wrote:
> > On Wed, Jul 12, 2017 at 06:10:05PM +0300, Michael S. Tsirkin wrote:
> > > On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
> > > > This implements a testcase for pxe-test using the vhost-user interface. Spawn a
> > > > vhost-user-bridge process and connect it to the qemu process.
> > > >
> > > > It is send as an RFC because:
> > > > - Patch 3/3: there must be cleaner way to do this.
> > > > - Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
> > > > - don't hardcode port numbers in qemu cmdline, create socket and pass
> > > > fd to -netdev (need to figure out how to do this)
> > >
> > > Doesn't this work?
> > >
> > > -netdev socket,id=str[,fd=h]
> >
> > It should. But I get this:
> >
> > dded sock 5 for watching. max_sock: 5
> > Sock 3 removed from dispatcher watch.
> > qemu: error: specified mcastaddr "127.0.0.1" (0x7f000001) does not contain a multicast address
> > qemu-system-x86_64: -netdev socket,id=n1,fd=3: Device 'socket' could not be initialized
> > Broken pipe
>
> Not sure what's wrong with it, should not be too hard to debug.
Jens asked me this question on IRC. I didn't know the answer either but
git-log(1) shows what happened:
-net socket,fd= was broken for SOCK_DGRAM from the moment mcast was
introduced by commit 3d830459b1eccdb61b75e2712fd364012ce5a115 ("'-net
socket,mcast=' option support (initial patch by Juan Jose Ciarlante)").
The issue is probably that the fd init code doesn't know whether the
user wanted mcast or not. Right now it's hardcoded to assume that mcast
is desired. It may be necessary to extend the command-line syntax to
specify mcast explicitly with fd=.
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge
2017-07-19 8:44 ` Stefan Hajnoczi
@ 2017-07-19 15:51 ` Jens Freimann
0 siblings, 0 replies; 17+ messages in thread
From: Jens Freimann @ 2017-07-19 15:51 UTC (permalink / raw)
To: Stefan Hajnoczi
Cc: Michael S. Tsirkin, marcandre.lureau, maxime.coquelin, victork,
qemu-devel
On Wed, Jul 19, 2017 at 09:44:02AM +0100, Stefan Hajnoczi wrote:
>On Thu, Jul 13, 2017 at 01:33:43AM +0300, Michael S. Tsirkin wrote:
>> On Wed, Jul 12, 2017 at 11:13:05PM +0200, Jens Freimann wrote:
>> > On Wed, Jul 12, 2017 at 06:10:05PM +0300, Michael S. Tsirkin wrote:
>> > > On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
>> > > > This implements a testcase for pxe-test using the vhost-user interface. Spawn a
>> > > > vhost-user-bridge process and connect it to the qemu process.
>> > > >
>> > > > It is send as an RFC because:
>> > > > - Patch 3/3: there must be cleaner way to do this.
>> > > > - Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
>> > > > - don't hardcode port numbers in qemu cmdline, create socket and pass
>> > > > fd to -netdev (need to figure out how to do this)
>> > >
>> > > Doesn't this work?
>> > >
>> > > -netdev socket,id=str[,fd=h]
>> >
>> > It should. But I get this:
>> >
>> > dded sock 5 for watching. max_sock: 5
>> > Sock 3 removed from dispatcher watch.
>> > qemu: error: specified mcastaddr "127.0.0.1" (0x7f000001) does not contain a multicast address
>> > qemu-system-x86_64: -netdev socket,id=n1,fd=3: Device 'socket' could not be initialized
>> > Broken pipe
>>
>> Not sure what's wrong with it, should not be too hard to debug.
>
>Jens asked me this question on IRC. I didn't know the answer either but
>git-log(1) shows what happened:
>
>-net socket,fd= was broken for SOCK_DGRAM from the moment mcast was
>introduced by commit 3d830459b1eccdb61b75e2712fd364012ce5a115 ("'-net
>socket,mcast=' option support (initial patch by Juan Jose Ciarlante)").
>
>The issue is probably that the fd init code doesn't know whether the
>user wanted mcast or not. Right now it's hardcoded to assume that mcast
>is desired. It may be necessary to extend the command-line syntax to
>specify mcast explicitly with fd=.
Thanks for confirming this Stefan! I'll try to come up with an extension to the
command-line syntax and send a proposal to the list.
regards,
Jens
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2017-07-19 15:58 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-12 9:41 [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 1/3] tests/vhost-user-bridge: disable debug output by default Jens Freimann
2017-07-12 14:57 ` Maxime Coquelin
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge Jens Freimann
2017-07-12 15:39 ` Maxime Coquelin
2017-07-12 15:45 ` Jens Freimann
2017-07-12 9:41 ` [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received Jens Freimann
2017-07-12 16:05 ` Maxime Coquelin
2017-07-13 16:01 ` Marc-André Lureau
2017-07-14 10:12 ` Jens Freimann
2017-07-12 11:59 ` [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge no-reply
2017-07-12 12:37 ` no-reply
2017-07-12 15:10 ` Michael S. Tsirkin
2017-07-12 21:13 ` Jens Freimann
2017-07-12 22:33 ` Michael S. Tsirkin
2017-07-19 8:44 ` Stefan Hajnoczi
2017-07-19 15:51 ` Jens Freimann
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.