configure | 2 +- include/qemu/atomic.h | 6 ++++ .travis.yml | 42 ++++++++++++++++++++++++++++ tests/docker/dockerfiles/centos7.docker | 6 ++-- tests/docker/dockerfiles/debian-amd64.docker | 1 + tests/docker/dockerfiles/fedora.docker | 10 +++++-- tests/vm/basevm.py | 23 +++++++++------ tests/vm/fedora | 1 + tests/vm/freebsd | 5 ++-- tests/vm/netbsd | 24 +++++----------- tests/vm/openbsd | 1 + tests/vm/ubuntu.i386 | 5 +++- 12 files changed, 91 insertions(+), 35 deletions(-)
The following changes since commit cfe68ae025f704f336d7dd3d1903ce37b445831d: Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.0-pull-request' into staging (2020-03-26 20:55:54 +0000) are available in the Git repository at: https://github.com/stsquad/qemu.git tags/pull-testing-270320-2 for you to fetch changes up to 41e1f0e2256e4c21bc5671ecb64191e776477c35: .travis.yml: Add a KVM-only s390x job (2020-03-27 13:43:20 +0000) ---------------------------------------------------------------- Testing updates: - docker updates (various dependencies) - travis updates (s390x KVM build) - tweak qemu/atomic.h headers in event of clash - test/vm updates (NetBSD -> 9.0, FreeBSD -> 12.1) - disable MTTCG for mips64/mips64el ---------------------------------------------------------------- Alex Bennée (3): qemu/atomic.h: add #ifdef guards for stdatomic.h tests/vm: fix basevm config configure: disable MTTCG for MIPS guests Gerd Hoffmann (4): tests/vm: write raw console log tests/vm: move vga setup tests/vm: update FreeBSD to 12.1 tests/vm: update NetBSD to 9.0 Philippe Mathieu-Daudé (5): tests/docker: Keep package list sorted tests/docker: Install gcrypt devel package in Debian image tests/docker: Use Python3 PyYAML in the Fedora image tests/docker: Add libepoxy and libudev packages to the Fedora image .travis.yml: Add a KVM-only s390x job configure | 2 +- include/qemu/atomic.h | 6 ++++ .travis.yml | 42 ++++++++++++++++++++++++++++ tests/docker/dockerfiles/centos7.docker | 6 ++-- tests/docker/dockerfiles/debian-amd64.docker | 1 + tests/docker/dockerfiles/fedora.docker | 10 +++++-- tests/vm/basevm.py | 23 +++++++++------ tests/vm/fedora | 1 + tests/vm/freebsd | 5 ++-- tests/vm/netbsd | 24 +++++----------- tests/vm/openbsd | 1 + tests/vm/ubuntu.i386 | 5 +++- 12 files changed, 91 insertions(+), 35 deletions(-) -- 2.20.1
On Fri, 27 Mar 2020 at 18:13, Alex Bennée <alex.bennee@linaro.org> wrote: > > The following changes since commit cfe68ae025f704f336d7dd3d1903ce37b445831d: > > Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.0-pull-request' into staging (2020-03-26 20:55:54 +0000) > > are available in the Git repository at: > > https://github.com/stsquad/qemu.git tags/pull-testing-270320-2 > > for you to fetch changes up to 41e1f0e2256e4c21bc5671ecb64191e776477c35: > > .travis.yml: Add a KVM-only s390x job (2020-03-27 13:43:20 +0000) > > ---------------------------------------------------------------- > Testing updates: > > - docker updates (various dependencies) > - travis updates (s390x KVM build) > - tweak qemu/atomic.h headers in event of clash > - test/vm updates (NetBSD -> 9.0, FreeBSD -> 12.1) > - disable MTTCG for mips64/mips64el > Applied, thanks. Please update the changelog at https://wiki.qemu.org/ChangeLog/5.0 for any user-visible changes. -- PMM
Deep inside the FreeBSD netmap headers we end up including stdatomic.h which clashes with qemu's atomic functions which are modelled along the C11 standard. To avoid a massive rename lets just ifdef around the problem. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200326170121.13045-1-alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> diff --git a/include/qemu/atomic.h b/include/qemu/atomic.h index f9cd24c8994..ff72db51154 100644 --- a/include/qemu/atomic.h +++ b/include/qemu/atomic.h @@ -208,11 +208,14 @@ /* Provide shorter names for GCC atomic builtins, return old value */ #define atomic_fetch_inc(ptr) __atomic_fetch_add(ptr, 1, __ATOMIC_SEQ_CST) #define atomic_fetch_dec(ptr) __atomic_fetch_sub(ptr, 1, __ATOMIC_SEQ_CST) + +#ifndef atomic_fetch_add #define atomic_fetch_add(ptr, n) __atomic_fetch_add(ptr, n, __ATOMIC_SEQ_CST) #define atomic_fetch_sub(ptr, n) __atomic_fetch_sub(ptr, n, __ATOMIC_SEQ_CST) #define atomic_fetch_and(ptr, n) __atomic_fetch_and(ptr, n, __ATOMIC_SEQ_CST) #define atomic_fetch_or(ptr, n) __atomic_fetch_or(ptr, n, __ATOMIC_SEQ_CST) #define atomic_fetch_xor(ptr, n) __atomic_fetch_xor(ptr, n, __ATOMIC_SEQ_CST) +#endif #define atomic_inc_fetch(ptr) __atomic_add_fetch(ptr, 1, __ATOMIC_SEQ_CST) #define atomic_dec_fetch(ptr) __atomic_sub_fetch(ptr, 1, __ATOMIC_SEQ_CST) @@ -392,11 +395,14 @@ /* Provide shorter names for GCC atomic builtins. */ #define atomic_fetch_inc(ptr) __sync_fetch_and_add(ptr, 1) #define atomic_fetch_dec(ptr) __sync_fetch_and_add(ptr, -1) + +#ifndef atomic_fetch_add #define atomic_fetch_add(ptr, n) __sync_fetch_and_add(ptr, n) #define atomic_fetch_sub(ptr, n) __sync_fetch_and_sub(ptr, n) #define atomic_fetch_and(ptr, n) __sync_fetch_and_and(ptr, n) #define atomic_fetch_or(ptr, n) __sync_fetch_and_or(ptr, n) #define atomic_fetch_xor(ptr, n) __sync_fetch_and_xor(ptr, n) +#endif #define atomic_inc_fetch(ptr) __sync_add_and_fetch(ptr, 1) #define atomic_dec_fetch(ptr) __sync_add_and_fetch(ptr, -1) -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> Run "tail -f /var/tmp/*/qemu*console.raw" in another terminal to watch the install console. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200310083218.26355-2-kraxel@redhat.com> Message-Id: <20200323161514.23952-2-alex.bennee@linaro.org> diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index 8400b0e07f6..c53fd354d95 100644 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -213,6 +213,9 @@ class BaseVM(object): def console_init(self, timeout = 120): vm = self._guest vm.console_socket.settimeout(timeout) + self.console_raw_path = os.path.join(vm._temp_dir, + vm._name + "-console.raw") + self.console_raw_file = open(self.console_raw_path, 'wb') def console_log(self, text): for line in re.split("[\r\n]", text): @@ -234,6 +237,9 @@ class BaseVM(object): while True: try: chars = vm.console_socket.recv(1) + if self.console_raw_file: + self.console_raw_file.write(chars) + self.console_raw_file.flush() except socket.timeout: sys.stderr.write("console: *** read timeout ***\n") sys.stderr.write("console: waiting for: '%s'\n" % expect) -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200310083218.26355-4-kraxel@redhat.com> Message-Id: <20200323161514.23952-4-alex.bennee@linaro.org> diff --git a/tests/vm/freebsd b/tests/vm/freebsd index 58166766d91..298967fe9cf 100755 --- a/tests/vm/freebsd +++ b/tests/vm/freebsd @@ -24,8 +24,8 @@ class FreeBSDVM(basevm.BaseVM): name = "freebsd" arch = "x86_64" - link = "https://download.freebsd.org/ftp/releases/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-disc1.iso.xz" - csum = "1d40015bea89d05b8bd13e2ed80c40b522a9ec1abd8e7c8b80954fb485fb99db" + link = "https://download.freebsd.org/ftp/releases/ISO-IMAGES/12.1/FreeBSD-12.1-RELEASE-amd64-disc1.iso.xz" + csum = "7394c3f60a1e236e7bd3a05809cf43ae39a3b8e5d42d782004cf2f26b1cfcd88" size = "20G" pkgs = [ # build tools -- 2.20.1
From: Gerd Hoffmann <kraxel@redhat.com> The installer supports GPT now, so the install workflow has changed a bit. Also: run without VGA device. This works around a bug in the seabios sercon code and makes the bootloader menu show up on the serial line, so we can drop the quirk for that. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20200310083218.26355-5-kraxel@redhat.com> Message-Id: <20200323161514.23952-5-alex.bennee@linaro.org> diff --git a/tests/vm/netbsd b/tests/vm/netbsd index f3257bc245a..b10c9d429de 100755 --- a/tests/vm/netbsd +++ b/tests/vm/netbsd @@ -22,8 +22,8 @@ class NetBSDVM(basevm.BaseVM): name = "netbsd" arch = "x86_64" - link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-8.1/images/NetBSD-8.1-amd64.iso" - csum = "718f275b7e0879599bdac95630c5e3f2184700032fdb6cdebf3bdd63687898c48ff3f08f57b89f4437a86cdd8ea07c01a39d432dbb37e1e4b008f4985f98da3f" + link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.0/images/NetBSD-9.0-amd64.iso" + csum = "34da4882ee61bdbf69f241195a8933dc800949d30b43fc6988da853d57fc2b8cac50cf97a0d2adaf93250b4e329d189c1a8b83c33bd515226f37745d50c33369" size = "20G" pkgs = [ # tools @@ -86,42 +86,31 @@ class NetBSDVM(basevm.BaseVM): self.boot(img_tmp, extra_args = [ "-bios", "pc-bios/bios-256k.bin", "-machine", "graphics=off", - "-device", "VGA", "-cdrom", iso ]) self.console_init() - self.console_wait("Primary Bootstrap") - - # serial console boot menu output doesn't work for some - # reason, so we have to fly blind ... - for char in list("5consdev com0\n"): - time.sleep(0.2) - self.console_send(char) - self.console_consume() + self.console_wait_send("3. Drop to boot prompt", "3") + self.console_wait_send("> ", "consdev com0\n") self.console_wait_send("> ", "boot\n") self.console_wait_send("Terminal type", "xterm\n") self.console_wait_send("a: Installation messages", "a\n") - self.console_wait_send("b: US-English", "b\n") self.console_wait_send("a: Install NetBSD", "a\n") self.console_wait("Shall we continue?") self.console_wait_send("b: Yes", "b\n") self.console_wait_send("a: ld0", "a\n") + self.console_wait_send("a: Guid Partition Table", "a\n") self.console_wait_send("a: This is the correct", "a\n") - self.console_wait_send("b: Use the entire disk", "b\n") - self.console_wait("NetBSD bootcode") - self.console_wait_send("a: Yes", "a\n") - self.console_wait_send("b: Use existing part", "b\n") + self.console_wait_send("b: Use default part", "b\n") self.console_wait_send("x: Partition sizes ok", "x\n") - self.console_wait_send("for your NetBSD disk", "\n") self.console_wait("Shall we continue?") self.console_wait_send("b: Yes", "b\n") self.console_wait_send("b: Use serial port com0", "b\n") self.console_wait_send("f: Set serial baud rate", "f\n") self.console_wait_send("a: 9600", "a\n") - self.console_wait_send("x: Exit", "x\n") + self.console_wait_send("x: Continue", "x\n") self.console_wait_send("a: Full installation", "a\n") self.console_wait_send("a: CD-ROM", "a\n") -- 2.20.1
When the patch was merged it was part of a longer series which had already merged the config changes. Semu-revert the config related changes for now so things will build. Fixes: b081986c85fd2 Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200323161514.23952-6-alex.bennee@linaro.org> diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index cffe7c4600e..756ccf7acae 100644 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -358,23 +358,23 @@ class BaseVM(object): "local-hostname: {}-guest\n".format(name)]) mdata.close() udata = open(os.path.join(cidir, "user-data"), "w") - print("guest user:pw {}:{}".format(self._config['guest_user'], - self._config['guest_pass'])) + print("guest user:pw {}:{}".format(self.GUEST_USER, + self.GUEST_PASS)) udata.writelines(["#cloud-config\n", "chpasswd:\n", " list: |\n", - " root:%s\n" % self._config['root_pass'], - " %s:%s\n" % (self._config['guest_user'], - self._config['guest_pass']), + " root:%s\n" % self.ROOT_PASS, + " %s:%s\n" % (self.GUEST_USER, + self.GUEST_PASS), " expire: False\n", "users:\n", - " - name: %s\n" % self._config['guest_user'], + " - name: %s\n" % self.GUEST_USER, " sudo: ALL=(ALL) NOPASSWD:ALL\n", " ssh-authorized-keys:\n", - " - %s\n" % self._config['ssh_pub_key'], + " - %s\n" % SSH_PUB_KEY, " - name: root\n", " ssh-authorized-keys:\n", - " - %s\n" % self._config['ssh_pub_key'], + " - %s\n" % SSH_PUB_KEY, "locale: en_US.UTF-8\n"]) proxy = os.environ.get("http_proxy") if not proxy is None: -- 2.20.1
While debugging check-acceptance failures I found an instability in the mips64el test case. Briefly the test case: retry.py -n 100 -c -- ./mips64el-softmmu/qemu-system-mips64el \ -display none -vga none -serial mon:stdio \ -machine malta -kernel ./vmlinux-4.7.0-rc1.I6400 \ -cpu I6400 -smp 8 -vga std \ -append "printk.time=0 clocksource=GIC console=tty0 console=ttyS0 panic=-1" \ --no-reboot Reports about a 9% failure rate: Results summary: 0: 91 times (91.00%), avg time 5.547 (0.45 varience/0.67 deviation) -6: 9 times (9.00%), avg time 3.394 (0.02 varience/0.13 deviation) Ran command 100 times, 91 passes When re-run with "--accel tcg,thread=single" the instability goes away. Results summary: 0: 100 times (100.00%), avg time 17.318 (249.76 varience/15.80 deviation) Ran command 100 times, 100 passes Which seems to indicate there is some aspect of the MIPS MTTCG fixes that has been missed. Ideally we would fix that but I'm afraid I don't have time to investigate and am not super familiar with the architecture anyway. In lieu of someone tracking down the failure lets disable it for now. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Acked-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Acked-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: Aleksandar Rikalo <aleksandar.rikalo@rt-rk.com> Message-Id: <20200323161514.23952-7-alex.bennee@linaro.org> diff --git a/configure b/configure index 89fe881dd46..e225a1e3ffe 100755 --- a/configure +++ b/configure @@ -7887,7 +7887,7 @@ case "$target_name" in TARGET_SYSTBL_ABI=n32 ;; mips64|mips64el) - mttcg="yes" + mttcg="no" TARGET_ARCH=mips64 TARGET_BASE_ARCH=mips echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak -- 2.20.1
From: Philippe Mathieu-Daudé <philmd@redhat.com> In commit 6f8bbb374be we enabled building with the gcrypt library on the the Debian 'x86 host', which was based on Debian Stretch. Later in commit 698a71edbed we upgraded the Debian base image to Buster. Apparently Debian Stretch was listing gcrypt as a QEMU dependency, but this is not the case anymore in Buster, so we need to install it manually (it it not listed by 'apt-get -s build-dep qemu' in the common debian10.docker anymore). This fixes: $ ../configure $QEMU_CONFIGURE_OPTS ERROR: User requested feature gcrypt configure was not able to find it. Install gcrypt devel >= 1.5.0 Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200322120104.21267-3-philmd@redhat.com> Message-Id: <20200323161514.23952-9-alex.bennee@linaro.org> diff --git a/tests/docker/dockerfiles/debian-amd64.docker b/tests/docker/dockerfiles/debian-amd64.docker index d4849f509f4..957f0bc2e79 100644 --- a/tests/docker/dockerfiles/debian-amd64.docker +++ b/tests/docker/dockerfiles/debian-amd64.docker @@ -16,6 +16,7 @@ RUN apt update && \ apt install -y --no-install-recommends \ libbz2-dev \ liblzo2-dev \ + libgcrypt20-dev \ librdmacm-dev \ libsasl2-dev \ libsnappy-dev \ -- 2.20.1
From: Philippe Mathieu-Daudé <philmd@redhat.com> The Python2 PyYAML is now pointless, switch to the Python3 version. Fixes: bcbf27947 (docker: move tests from python2 to python3) Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200322120104.21267-4-philmd@redhat.com> Message-Id: <20200323161514.23952-10-alex.bennee@linaro.org> diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 019eb12dcb1..174979c7af4 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -79,8 +79,8 @@ ENV PACKAGES \ perl-Test-Harness \ pixman-devel \ python3 \ + python3-PyYAML \ python3-sphinx \ - PyYAML \ rdma-core-devel \ SDL2-devel \ snappy-devel \ -- 2.20.1
From: Philippe Mathieu-Daudé <philmd@redhat.com> Install optional dependencies of QEMU to get better coverage. Suggested-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200322120104.21267-5-philmd@redhat.com> Message-Id: <20200323161514.23952-11-alex.bennee@linaro.org> diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker index 174979c7af4..4bd2c953af8 100644 --- a/tests/docker/dockerfiles/fedora.docker +++ b/tests/docker/dockerfiles/fedora.docker @@ -29,6 +29,7 @@ ENV PACKAGES \ libblockdev-mpath-devel \ libcap-ng-devel \ libcurl-devel \ + libepoxy-devel \ libfdt-devel \ libiscsi-devel \ libjpeg-devel \ @@ -38,6 +39,7 @@ ENV PACKAGES \ libseccomp-devel \ libssh-devel \ libubsan \ + libudev-devel \ libusbx-devel \ libxml2-devel \ libzstd-devel \ -- 2.20.1
From: Philippe Mathieu-Daudé <philmd@redhat.com> Add a job to build QEMU on s390x with TCG disabled, so this configuration won't bitrot over time. This job is quick, running check-unit: Ran for 5 min 30 sec https://travis-ci.org/github/philmd/qemu/jobs/665456423 Acked-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200322154015.25358-1-philmd@redhat.com> Message-Id: <20200323161514.23952-12-alex.bennee@linaro.org> diff --git a/.travis.yml b/.travis.yml index 5672d129ec6..e0c72210b7a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -525,6 +525,48 @@ jobs: $(exit $BUILD_RC); fi + - name: "[s390x] GCC check (KVM)" + arch: s390x + dist: bionic + addons: + apt_packages: + - libaio-dev + - libattr1-dev + - libbrlapi-dev + - libcap-ng-dev + - libgcrypt20-dev + - libgnutls28-dev + - libgtk-3-dev + - libiscsi-dev + - liblttng-ust-dev + - libncurses5-dev + - libnfs-dev + - libnss3-dev + - libpixman-1-dev + - libpng-dev + - librados-dev + - libsdl2-dev + - libseccomp-dev + - liburcu-dev + - libusb-1.0-0-dev + - libvdeplug-dev + - libvte-2.91-dev + # Tests dependencies + - genisoimage + env: + - TEST_CMD="make check-unit" + - CONFIG="--disable-containers --disable-tcg --enable-kvm --disable-tools" + script: + - ( cd ${SRC_DIR} ; git submodule update --init roms/SLOF ) + - BUILD_RC=0 && make -j${JOBS} || BUILD_RC=$? + - | + if [ "$BUILD_RC" -eq 0 ] ; then + mv pc-bios/s390-ccw/*.img pc-bios/ ; + ${TEST_CMD} ; + else + $(exit $BUILD_RC); + fi + # Release builds # The make-release script expect a QEMU version, so our tag must start with a 'v'. # This is the case when release candidate tags are created. -- 2.20.1
© 2016 - 2024 Red Hat, Inc.