* Replace YAML anchors by extends in the gitlab-CI yaml files

* Many small qtest fixes (e.g. to fix issues discovered by Coverity)
 * Poison more config switches in common code
 * Fix the failing Travis-CI and Cirrus-CI tasks
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmCeXFMRHHRodXRoQHJl
 ZGhhdC5jb20ACgkQLtnXdP5wLbUV7g//VRxN74v2pO6zSsSNavYTkMa3jZE1Io3l
 w9lsOr3DM0HIMhyEMwSJsiygj0s8TNanUtFBHfDfo1k1gmZYd5FiM1sB7ZB/sB/S
 9Q9wjmeV2NMG7pcr9zLmiJaEM2LGfGbso44/m0c+gpSyxzg2TeH7sF+38AUZI9/R
 J6/gOzIs4WWdSV4f8kp+YPPQCyOtxZsfxDuk1z1fKsBgXE5iEBUqYyyZUm4gYJkN
 4ALmqc/NVeLszt08qkPHxwXQc488nCJP31psxx6MQ7toKfCAamT07Pp3oi70cakC
 y+HVfsIHc7SxaZyj8sbJCU3LJHwDd8N82ydJUrv216qDffb38fNb+m6y9mcYy2MH
 C25uGe9mucTuTP1WIttC6nCKg/MCgi4PWIzqEhkeKj3TxpTUJJP+BUIfSubV38Gc
 T+XUCNkWWW8sTeRiyE3m9pEZ+gz1MFubaIr/Owephch1SjRYn4zUwJFHHi3I4PY4
 7XjEo8y2M9tKckW3pCfYi+aIDzC1DcRtzvXUGtdemX5xVjTAGlKkFLWl/brdCn2U
 y+JrwrL8cQ3Fy7bXzmK6m9mmhcIW6PcSOBE7RnSESyKzqM5VBSBgnjMqnHcP3FrV
 FYzihTCDcFKy3ELUe3Kbc1TgG/07stQs9xInGXN7ZFsIwadfHgoNVQ6JpOqq1oQa
 fvmLPBhq+a4=
 =QZuG
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-05-14' into staging

* Replace YAML anchors by extends in the gitlab-CI yaml files
* Many small qtest fixes (e.g. to fix issues discovered by Coverity)
* Poison more config switches in common code
* Fix the failing Travis-CI and Cirrus-CI tasks

# gpg: Signature made Fri 14 May 2021 12:17:39 BST
# gpg:                using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5
# gpg:                issuer "thuth@redhat.com"
# gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full]
# gpg:                 aka "Thomas Huth <thuth@redhat.com>" [full]
# gpg:                 aka "Thomas Huth <huth@tuxfamily.org>" [full]
# gpg:                 aka "Thomas Huth <th.huth@posteo.de>" [unknown]
# Primary key fingerprint: 27B8 8847 EEE0 2501 18F3  EAB9 2ED9 D774 FE70 2DB5

* remotes/thuth-gitlab/tags/pull-request-2021-05-14:
  cirrus.yml: Fix the MSYS2 task
  pc-bios/s390-ccw: Fix inline assembly for older versions of Clang
  tests/qtest/migration-test: Use g_autofree to avoid leaks on error paths
  configure: Poison all current target-specific #defines
  migration: Move populate_vfio_info() into a separate file
  include/sysemu: Poison all accelerator CONFIG switches in common code
  tests: Avoid side effects inside g_assert() arguments
  tests/qtest/rtc-test: Remove pointless NULL check
  tests/qtest/tpm-util.c: Free memory with correct free function
  tests/migration-test: Fix "true" vs true
  tests/qtest/npcm7xx_pwm-test.c: Avoid g_assert_true() for non-test assertions
  tests/qtest/ahci-test.c: Calculate iso_size with 64-bit arithmetic
  util/compatfd.c: Replaced a malloc call with g_malloc.
  libqtest: refuse QTEST_QEMU_BINARY=qemu-kvm
  docs/devel/qgraph: add troubleshooting information
  libqos/qgraph: fix "UNAVAILBLE" typo
  gitlab-ci: Replace YAML anchors by extends (native_test_job)
  gitlab-ci: Replace YAML anchors by extends (native_build_job)
  gitlab-ci: Replace YAML anchors by extends (container_job)
  tests/docker/dockerfiles: Add ccache to containers where it was missing

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2021-05-14 19:33:23 +01:00
commit 9b1e81d1c2
32 changed files with 243 additions and 138 deletions

View File

@ -67,7 +67,7 @@ windows_msys2_task:
CIRRUS_SHELL: powershell
MSYS: winsymlinks:nativestrict
MSYSTEM: MINGW64
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2021-01-05/msys2-base-x86_64-20210105.sfx.exe
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2021-04-19/msys2-base-x86_64-20210419.sfx.exe
MSYS2_FINGERPRINT: 0
MSYS2_PACKAGES: "
diffutils git grep make pkg-config sed
@ -130,7 +130,7 @@ windows_msys2_task:
taskkill /F /FI "MODULES eq msys-2.0.dll"
tasklist
C:\tools\msys64\usr\bin\bash.exe -lc "mv -f /etc/pacman.conf.pacnew /etc/pacman.conf || true"
C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Suu --overwrite=*"
C:\tools\msys64\usr\bin\bash.exe -lc "pacman --noconfirm -Syuu --overwrite=*"
Write-Output "Core install time taken: $((Get-Date).Subtract($start_time))"
$start_time = Get-Date

View File

@ -1,4 +1,4 @@
.container_job_template: &container_job_definition
.container_job_template:
image: docker:stable
stage: containers
services:
@ -22,230 +22,230 @@
- docker logout
amd64-alpine-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: alpine
amd64-centos7-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: centos7
amd64-centos8-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: centos8
amd64-debian10-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: debian10
amd64-debian11-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: debian11
alpha-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-alpha-cross
amd64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-amd64-cross
amd64-debian-user-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-all-test-cross
amd64-debian-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-amd64
arm64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-arm64-cross
arm64-test-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian11-container']
variables:
NAME: debian-arm64-test-cross
armel-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-armel-cross
armhf-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-armhf-cross
hppa-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-hppa-cross
m68k-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-m68k-cross
mips64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-mips64-cross
mips64el-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-mips64el-cross
mips-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-mips-cross
mipsel-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-mipsel-cross
powerpc-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-powerpc-cross
ppc64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-ppc64-cross
ppc64el-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-ppc64el-cross
riscv64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-riscv64-cross
s390x-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-s390x-cross
sh4-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-sh4-cross
sparc64-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-sparc64-cross
tricore-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
variables:
NAME: debian-tricore-cross
xtensa-debian-cross-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: debian-xtensa-cross
cris-fedora-cross-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: fedora-cris-cross
amd64-fedora-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: fedora
i386-fedora-cross-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: fedora-i386-cross
win32-fedora-cross-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: fedora-win32-cross
win64-fedora-cross-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: fedora-win64-cross
amd64-ubuntu1804-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: ubuntu1804
amd64-ubuntu2004-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: ubuntu2004
amd64-ubuntu-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: ubuntu
amd64-opensuse-leap-container:
<<: *container_job_definition
extends: .container_job_template
variables:
NAME: opensuse-leap

View File

@ -13,7 +13,7 @@ include:
- local: '/.gitlab-ci.d/containers.yml'
- local: '/.gitlab-ci.d/crossbuilds.yml'
.native_build_job_template: &native_build_job_definition
.native_build_job_template:
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
before_script:
@ -41,7 +41,7 @@ include:
make -j"$JOBS" $MAKE_CHECK_ARGS ;
fi
.native_test_job_template: &native_test_job_definition
.native_test_job_template:
stage: test
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
script:
@ -83,7 +83,7 @@ include:
- du -chs ${CI_PROJECT_DIR}/avocado-cache
build-system-alpine:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
- job: amd64-alpine-container
variables:
@ -99,7 +99,7 @@ build-system-alpine:
- build
check-system-alpine:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-alpine
artifacts: true
@ -108,7 +108,7 @@ check-system-alpine:
MAKE_CHECK_ARGS: check
acceptance-system-alpine:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-alpine
artifacts: true
@ -118,7 +118,7 @@ acceptance-system-alpine:
<<: *acceptance_definition
build-system-ubuntu:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-ubuntu2004-container
variables:
@ -133,7 +133,7 @@ build-system-ubuntu:
- build
check-system-ubuntu:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-ubuntu
artifacts: true
@ -142,7 +142,7 @@ check-system-ubuntu:
MAKE_CHECK_ARGS: check
acceptance-system-ubuntu:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-ubuntu
artifacts: true
@ -152,7 +152,7 @@ acceptance-system-ubuntu:
<<: *acceptance_definition
build-system-debian:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-container
variables:
@ -167,7 +167,7 @@ build-system-debian:
- build
check-system-debian:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-debian
artifacts: true
@ -176,7 +176,7 @@ check-system-debian:
MAKE_CHECK_ARGS: check
acceptance-system-debian:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-debian
artifacts: true
@ -186,7 +186,7 @@ acceptance-system-debian:
<<: *acceptance_definition
build-system-fedora:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-fedora-container
variables:
@ -202,7 +202,7 @@ build-system-fedora:
- build
check-system-fedora:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-fedora
artifacts: true
@ -211,7 +211,7 @@ check-system-fedora:
MAKE_CHECK_ARGS: check
acceptance-system-fedora:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-fedora
artifacts: true
@ -221,7 +221,7 @@ acceptance-system-fedora:
<<: *acceptance_definition
build-system-centos:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos8-container
variables:
@ -237,7 +237,7 @@ build-system-centos:
- build
check-system-centos:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-centos
artifacts: true
@ -246,7 +246,7 @@ check-system-centos:
MAKE_CHECK_ARGS: check
acceptance-system-centos:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-centos
artifacts: true
@ -256,7 +256,7 @@ acceptance-system-centos:
<<: *acceptance_definition
build-system-opensuse:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-opensuse-leap-container
variables:
@ -270,7 +270,7 @@ build-system-opensuse:
- build
check-system-opensuse:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-opensuse
artifacts: true
@ -279,7 +279,7 @@ check-system-opensuse:
MAKE_CHECK_ARGS: check
acceptance-system-opensuse:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-system-opensuse
artifacts: true
@ -290,7 +290,7 @@ acceptance-system-opensuse:
build-disabled:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-fedora-container
variables:
@ -376,7 +376,7 @@ build-disabled:
# Also use a different coroutine implementation (which is only really of
# interest to KVM users, i.e. with TCG disabled)
build-tcg-disabled:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos8-container
variables:
@ -399,7 +399,7 @@ build-tcg-disabled:
260 261 262 263 264 270 272 273 277 279
build-user:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -408,7 +408,7 @@ build-user:
MAKE_CHECK_ARGS: check-tcg
build-user-static:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -418,7 +418,7 @@ build-user-static:
# Only build the softmmu targets we have check-tcg tests for
build-some-softmmu:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -431,7 +431,7 @@ build-some-softmmu:
# we skip sparc64-linux-user until it has been fixed somewhat
# we skip cris-linux-user as it doesn't use the common run loop
build-user-plugins:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -441,7 +441,7 @@ build-user-plugins:
timeout: 1h 30m
build-user-centos7:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
@ -450,7 +450,7 @@ build-user-centos7:
MAKE_CHECK_ARGS: check-tcg
build-some-softmmu-plugins:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -460,7 +460,7 @@ build-some-softmmu-plugins:
MAKE_CHECK_ARGS: check-tcg
clang-system:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-fedora-container
variables:
@ -472,7 +472,7 @@ clang-system:
MAKE_CHECK_ARGS: check-qtest check-tcg
clang-user:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -494,7 +494,7 @@ clang-user:
# Split in three sets of build/check/acceptance to limit the execution time of each
# job
build-cfi-aarch64:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
- job: amd64-fedora-container
variables:
@ -512,7 +512,7 @@ build-cfi-aarch64:
- build
check-cfi-aarch64:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-aarch64
artifacts: true
@ -521,7 +521,7 @@ check-cfi-aarch64:
MAKE_CHECK_ARGS: check
acceptance-cfi-aarch64:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-aarch64
artifacts: true
@ -531,7 +531,7 @@ acceptance-cfi-aarch64:
<<: *acceptance_definition
build-cfi-ppc64-s390x:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
- job: amd64-fedora-container
variables:
@ -549,7 +549,7 @@ build-cfi-ppc64-s390x:
- build
check-cfi-ppc64-s390x:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-ppc64-s390x
artifacts: true
@ -558,7 +558,7 @@ check-cfi-ppc64-s390x:
MAKE_CHECK_ARGS: check
acceptance-cfi-ppc64-s390x:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-ppc64-s390x
artifacts: true
@ -568,7 +568,7 @@ acceptance-cfi-ppc64-s390x:
<<: *acceptance_definition
build-cfi-x86_64:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
- job: amd64-fedora-container
variables:
@ -586,7 +586,7 @@ build-cfi-x86_64:
- build
check-cfi-x86_64:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-x86_64
artifacts: true
@ -595,7 +595,7 @@ check-cfi-x86_64:
MAKE_CHECK_ARGS: check
acceptance-cfi-x86_64:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-cfi-x86_64
artifacts: true
@ -605,7 +605,7 @@ acceptance-cfi-x86_64:
<<: *acceptance_definition
tsan-build:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-ubuntu2004-container
variables:
@ -617,7 +617,7 @@ tsan-build:
# These targets are on the way out
build-deprecated:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -633,7 +633,7 @@ build-deprecated:
# We split the check-tcg step as test failures are expected but we still
# want to catch the build breaking.
check-deprecated:
<<: *native_test_job_definition
extends: .native_test_job_template
needs:
- job: build-deprecated
artifacts: true
@ -644,7 +644,7 @@ check-deprecated:
# gprof/gcov are GCC features
gprof-gcov:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-ubuntu2004-container
variables:
@ -657,7 +657,7 @@ gprof-gcov:
- ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh
build-oss-fuzz:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-fedora-container
variables:
@ -677,7 +677,7 @@ build-oss-fuzz:
- cd build-oss-fuzz && make check-qtest-i386 check-unit
build-tci:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-user-cross-container
variables:
@ -702,7 +702,7 @@ build-tci:
# Alternate coroutines implementations are only really of interest to KVM users
# However we can't test against KVM on Gitlab-CI so we can only run unit tests
build-coroutine-sigaltstack:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-ubuntu2004-container
variables:
@ -716,7 +716,7 @@ build-coroutine-sigaltstack:
# These jobs test old gcrypt and nettle from RHEL7
# which had some API differences.
crypto-old-nettle:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
@ -726,7 +726,7 @@ crypto-old-nettle:
MAKE_CHECK_ARGS: check
crypto-old-gcrypt:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
@ -736,7 +736,7 @@ crypto-old-gcrypt:
MAKE_CHECK_ARGS: check
crypto-only-gnutls:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos7-container
variables:
@ -748,7 +748,7 @@ crypto-only-gnutls:
# Check our reduced build configurations
build-without-default-devices:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-centos8-container
variables:
@ -756,7 +756,7 @@ build-without-default-devices:
CONFIGURE_ARGS: --without-default-devices --disable-user
build-without-default-features:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-container
variables:
@ -806,7 +806,7 @@ build-libvhost-user:
# No targets are built here, just tools, docs, and unit tests. This
# also feeds into the eventual documentation deployment steps later
build-tools-and-docs-debian:
<<: *native_build_job_definition
extends: .native_build_job_template
needs:
job: amd64-debian-container
variables:

View File

@ -213,7 +213,7 @@ qemu-%.tar.bz2:
distclean: clean
-$(quiet-@)test -f build.ninja && $(NINJA) $(NINJAFLAGS) -t clean -g || :
rm -f config-host.mak config-host.h*
rm -f config-host.mak config-host.h* config-poison.h
rm -f tests/tcg/config-*.mak
rm -f config-all-disas.mak config.status
rm -f roms/seabios/config.mak roms/vgabios/config.mak

7
configure vendored
View File

@ -6473,6 +6473,13 @@ if test -n "${deprecated_features}"; then
echo " features: ${deprecated_features}"
fi
# Create list of config switches that should be poisoned in common code...
# but filter out CONFIG_TCG and CONFIG_USER_ONLY which are special.
sed -n -e '/CONFIG_TCG/d' -e '/CONFIG_USER_ONLY/d' \
-e '/^#define / { s///; s/ .*//; s/^/#pragma GCC poison /p; }' \
*-config-devices.h *-config-target.h | \
sort -u > config-poison.h
# Save the configure command line for later reuse.
cat <<EOD >config.status
#!/bin/sh

View File

@ -92,6 +92,64 @@ The basic framework steps are the following:
Depending on the QEMU binary used, only some drivers/machines will be
available and only test that are reached by them will be executed.
Troubleshooting unavailable tests
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If there is no path from an available machine to a test then that test will be
unavailable and won't execute. This can happen if a test or driver did not set
up its qgraph node correctly. It can also happen if the necessary machine type
or device is missing from the QEMU binary because it was compiled out or
otherwise.
It is possible to troubleshoot unavailable tests by running::
$ QTEST_QEMU_BINARY=build/qemu-system-x86_64 build/tests/qtest/qos-test --verbose
# ALL QGRAPH EDGES: {
# src='virtio-net'
# |-> dest='virtio-net-tests/vhost-user/multiqueue' type=2 (node=0x559142109e30)
# |-> dest='virtio-net-tests/vhost-user/migrate' type=2 (node=0x559142109d00)
# src='virtio-net-pci'
# |-> dest='virtio-net' type=1 (node=0x55914210d740)
# src='pci-bus'
# |-> dest='virtio-net-pci' type=2 (node=0x55914210d880)
# src='pci-bus-pc'
# |-> dest='pci-bus' type=1 (node=0x559142103f40)
# src='i440FX-pcihost'
# |-> dest='pci-bus-pc' type=0 (node=0x55914210ac70)
# src='x86_64/pc'
# |-> dest='i440FX-pcihost' type=0 (node=0x5591421117f0)
# src=''
# |-> dest='x86_64/pc' type=0 (node=0x559142111600)
# |-> dest='arm/raspi2' type=0 (node=0x559142110740)
...
# }
# ALL QGRAPH NODES: {
# name='virtio-net-tests/announce-self' type=3 cmd_line='(null)' [available]
# name='arm/raspi2' type=0 cmd_line='-M raspi2 ' [UNAVAILABLE]
...
# }
The ``virtio-net-tests/announce-self`` test is listed as "available" in the
"ALL QGRAPH NODES" output. This means the test will execute. We can follow the
qgraph path in the "ALL QGRAPH EDGES" output as follows: '' -> 'x86_64/pc' ->
'i440FX-pcihost' -> 'pci-bus-pc' -> 'pci-bus' -> 'virtio-net-pci' ->
'virtio-net'. The root of the qgraph is '' and the depth first search begins
there.
The ``arm/raspi`` machine node is listed as "UNAVAILABLE". Although it is
reachable from the root via '' -> 'arm/raspi2' the node is unavailable because
the QEMU binary did not list it when queried by the framework. This is expected
because we used the ``qemu-system-x86_64`` binary which does not support ARM
machine types.
If a test is unexpectedly listed as "UNAVAILABLE", first check that the "ALL
QGRAPH EDGES" output reports edge connectivity from the root ('') to the test.
If there is no connectivity then the qgraph nodes were not set up correctly and
the driver or test code is incorrect. If there is connectivity, check the
availability of each node in the path in the "ALL QGRAPH NODES" output. The
first unavailable node in the path is the reason why the test is unavailable.
Typically this is because the QEMU binary lacks support for the necessary
machine type or device.
Creating a new driver and its interface
"""""""""""""""""""""""""""""""""""""""""

View File

@ -4,6 +4,8 @@
#ifndef HW_POISON_H
#define HW_POISON_H
#include "config-poison.h"
#pragma GCC poison TARGET_I386
#pragma GCC poison TARGET_X86_64
#pragma GCC poison TARGET_AARCH64
@ -83,8 +85,12 @@
#pragma GCC poison CONFIG_SPARC_DIS
#pragma GCC poison CONFIG_XTENSA_DIS
#pragma GCC poison CONFIG_HAX
#pragma GCC poison CONFIG_HVF
#pragma GCC poison CONFIG_LINUX_USER
#pragma GCC poison CONFIG_KVM
#pragma GCC poison CONFIG_SOFTMMU
#pragma GCC poison CONFIG_WHPX
#pragma GCC poison CONFIG_XEN
#endif

View File

@ -24,6 +24,8 @@
int hax_sync_vcpus(void);
#ifdef NEED_CPU_H
#ifdef CONFIG_HAX
int hax_enabled(void);
@ -34,4 +36,6 @@ int hax_enabled(void);
#endif /* CONFIG_HAX */
#endif /* NEED_CPU_H */
#endif /* QEMU_HAX_H */

View File

@ -16,6 +16,8 @@
#include "qemu/accel.h"
#include "qom/object.h"
#ifdef NEED_CPU_H
#ifdef CONFIG_HVF
uint32_t hvf_get_supported_cpuid(uint32_t func, uint32_t idx,
int reg);
@ -26,6 +28,8 @@ extern bool hvf_allowed;
#define hvf_get_supported_cpuid(func, idx, reg) 0
#endif /* !CONFIG_HVF */
#endif /* NEED_CPU_H */
#define TYPE_HVF_ACCEL ACCEL_CLASS_NAME("hvf")
typedef struct HVFState HVFState;

View File

@ -13,6 +13,8 @@
#ifndef QEMU_WHPX_H
#define QEMU_WHPX_H
#ifdef NEED_CPU_H
#ifdef CONFIG_WHPX
int whpx_enabled(void);
@ -25,4 +27,6 @@ bool whpx_apic_in_platform(void);
#endif /* CONFIG_WHPX */
#endif /* NEED_CPU_H */
#endif /* QEMU_WHPX_H */

View File

@ -31,4 +31,5 @@ softmmu_ss.add(when: ['CONFIG_RDMA', rdma], if_true: files('rdma.c'))
softmmu_ss.add(when: 'CONFIG_LIVE_BLOCK_MIGRATION', if_true: files('block.c'))
softmmu_ss.add(when: zstd, if_true: files('multifd-zstd.c'))
specific_ss.add(when: 'CONFIG_SOFTMMU', if_true: files('dirtyrate.c', 'ram.c'))
specific_ss.add(when: 'CONFIG_SOFTMMU',
if_true: files('dirtyrate.c', 'ram.c', 'target.c'))

View File

@ -60,10 +60,6 @@
#include "qemu/yank.h"
#include "sysemu/cpus.h"
#ifdef CONFIG_VFIO
#include "hw/vfio/vfio-common.h"
#endif
#define MAX_THROTTLE (128 << 20) /* Migration transfer speed throttling */
/* Amount of time to allocate to each "chunk" of bandwidth-throttled
@ -1064,17 +1060,6 @@ static void populate_disk_info(MigrationInfo *info)
}
}
static void populate_vfio_info(MigrationInfo *info)
{
#ifdef CONFIG_VFIO
if (vfio_mig_active()) {
info->has_vfio = true;
info->vfio = g_malloc0(sizeof(*info->vfio));
info->vfio->transferred = vfio_mig_bytes_transferred();
}
#endif
}
static void fill_source_migration_info(MigrationInfo *info)
{
MigrationState *s = migrate_get_current();

View File

@ -377,4 +377,6 @@ void migration_consume_urgent_request(void);
bool migration_rate_limit(void);
void migration_cancel(void);
void populate_vfio_info(MigrationInfo *info);
#endif

25
migration/target.c Normal file
View File

@ -0,0 +1,25 @@
/*
* QEMU live migration - functions that need to be compiled target-specific
*
* This work is licensed under the terms of the GNU GPL, version 2
* or (at your option) any later version.
*/
#include "qemu/osdep.h"
#include "qapi/qapi-types-migration.h"
#include "migration.h"
#ifdef CONFIG_VFIO
#include "hw/vfio/vfio-common.h"
#endif
void populate_vfio_info(MigrationInfo *info)
{
#ifdef CONFIG_VFIO
if (vfio_mig_active()) {
info->has_vfio = true;
info->vfio = g_malloc0(sizeof(*info->vfio));
info->vfio->transferred = vfio_mig_bytes_transferred();
}
#endif
}

View File

@ -31,7 +31,7 @@ static inline void *u32toptr(uint32_t n)
static inline void yield(void)
{
asm volatile ("diag 0,0,0x44"
asm volatile ("diag %%r0,%%r0,0x44"
: :
: "memory", "cc");
}

View File

@ -64,8 +64,8 @@ void jump_to_IPL_code(uint64_t address)
* We use the load normal reset to keep r15 unchanged. jump_to_IPL_2
* can then use r15 as its stack pointer.
*/
asm volatile("lghi 1,1\n\t"
"diag 1,1,0x308\n\t"
asm volatile("lghi %%r1,1\n\t"
"diag %%r1,%%r1,0x308\n\t"
: : : "1", "memory");
panic("\n! IPL returns !\n");
}

View File

@ -36,9 +36,9 @@ static inline void enable_clock_int(void)
uint64_t tmp = 0;
asm volatile(
"stctg 0,0,%0\n"
"stctg %%c0,%%c0,%0\n"
"oi 6+%0, 0x8\n"
"lctlg 0,0,%0"
"lctlg %%c0,%%c0,%0"
: : "Q" (tmp) : "memory"
);
}
@ -48,9 +48,9 @@ static inline void disable_clock_int(void)
uint64_t tmp = 0;
asm volatile(
"stctg 0,0,%0\n"
"stctg %%c0,%%c0,%0\n"
"ni 6+%0, 0xf7\n"
"lctlg 0,0,%0"
"lctlg %%c0,%%c0,%0"
: : "Q" (tmp) : "memory"
);
}

View File

@ -54,7 +54,7 @@ static long kvm_hypercall(unsigned long nr, unsigned long param1,
register ulong r_param3 asm("4") = param3;
register long retval asm("2");
asm volatile ("diag 2,4,0x500"
asm volatile ("diag %%r2,%%r4,0x500"
: "=d" (retval)
: "d" (r_nr), "0" (r_param1), "r"(r_param2), "d"(r_param3)
: "memory", "cc");

View File

@ -9,6 +9,7 @@ ENV PACKAGES \
alsa-lib-dev \
bash \
binutils \
ccache \
coreutils \
curl-dev \
g++ \

View File

@ -1,6 +1,7 @@
FROM fedora:33
ENV PACKAGES \
bzip2 \
ccache \
diffutils \
findutils \
gcc \

View File

@ -4,6 +4,7 @@ FROM fedora:33
ENV PACKAGES \
bc \
bzip2 \
ccache \
diffutils \
findutils \
gcc \

View File

@ -4,6 +4,7 @@ FROM fedora:33
ENV PACKAGES \
bc \
bzip2 \
ccache \
diffutils \
findutils \
gcc \

View File

@ -5,6 +5,7 @@ ENV PACKAGES \
bc \
brlapi-devel \
bzip2 \
ccache \
cyrus-sasl-devel \
gcc \
gcc-c++ \

View File

@ -1491,14 +1491,14 @@ static void ahci_test_cdrom(int nsectors, bool dma, uint8_t cmd,
char *iso;
int fd;
AHCIOpts opts = {
.size = (ATAPI_SECTOR_SIZE * nsectors),
.size = ((uint64_t)ATAPI_SECTOR_SIZE * nsectors),
.atapi = true,
.atapi_dma = dma,
.post_cb = ahci_cb_cmp_buff,
.set_bcl = override_bcl,
.bcl = bcl,
};
uint64_t iso_size = ATAPI_SECTOR_SIZE * (nsectors + 1);
uint64_t iso_size = (uint64_t)ATAPI_SECTOR_SIZE * (nsectors + 1);
/* Prepare ISO and fill 'tx' buffer */
fd = prepare_iso(iso_size, &tx, &iso);

View File

@ -98,7 +98,8 @@ static void bt_wait_b_busy(void)
{
unsigned int count = 1000;
while (IPMI_BT_CTLREG_GET_B_BUSY() != 0) {
g_assert(--count != 0);
--count;
g_assert(count != 0);
usleep(100);
}
}
@ -107,7 +108,8 @@ static void bt_wait_b2h_atn(void)
{
unsigned int count = 1000;
while (IPMI_BT_CTLREG_GET_B2H_ATN() == 0) {
g_assert(--count != 0);
--count;
g_assert(count != 0);
usleep(100);
}
}

View File

@ -73,7 +73,8 @@ static void kcs_wait_ibf(void)
{
unsigned int count = 1000;
while (IPMI_KCS_CMDREG_GET_IBF() != 0) {
g_assert(--count != 0);
--count;
g_assert(count != 0);
}
}

View File

@ -844,7 +844,7 @@ void qos_dump_graph(void)
}
qos_printf_literal("type=%d cmd_line='%s' [%s]\n",
node->type, node->command_line,
node->available ? "available" : "UNAVAILBLE"
node->available ? "available" : "UNAVAILABLE"
);
}
g_list_free(keys);

View File

@ -907,7 +907,14 @@ const char *qtest_get_arch(void)
if (!end) {
fprintf(stderr, "Can't determine architecture from binary name.\n");
abort();
exit(1);
}
if (!strstr(qemu, "-system-")) {
fprintf(stderr, "QTEST_QEMU_BINARY must end with *-system-<arch> "
"where 'arch' is the target\narchitecture (x86_64, aarch64, "
"etc).\n");
exit(1);
}
return end + 1;

View File

@ -201,7 +201,7 @@ static int pwm_module_index(const PWMModule *module)
{
ptrdiff_t diff = module - pwm_module_list;
g_assert_true(diff >= 0 && diff < ARRAY_SIZE(pwm_module_list));
g_assert(diff >= 0 && diff < ARRAY_SIZE(pwm_module_list));
return diff;
}
@ -211,7 +211,7 @@ static int pwm_index(const PWM *pwm)
{
ptrdiff_t diff = pwm - pwm_list;
g_assert_true(diff >= 0 && diff < ARRAY_SIZE(pwm_list));
g_assert(diff >= 0 && diff < ARRAY_SIZE(pwm_list));
return diff;
}

View File

@ -686,7 +686,7 @@ static void periodic_timer(void)
int main(int argc, char **argv)
{
QTestState *s = NULL;
QTestState *s;
int ret;
g_test_init(&argc, &argv, NULL);
@ -712,9 +712,7 @@ int main(int argc, char **argv)
ret = g_test_run();
if (s) {
qtest_quit(s);
}
qtest_quit(s);
return ret;
}

View File

@ -289,6 +289,6 @@ void tpm_util_migration_start_qemu(QTestState **src_qemu,
*dst_qemu = qtest_init(dst_qemu_args);
free(src_qemu_args);
free(dst_qemu_args);
g_free(src_qemu_args);
g_free(dst_qemu_args);
}

View File

@ -72,14 +72,10 @@ static int qemu_signalfd_compat(const sigset_t *mask)
QemuThread thread;
int fds[2];
info = malloc(sizeof(*info));
if (info == NULL) {
errno = ENOMEM;
return -1;
}
info = g_malloc(sizeof(*info));
if (pipe(fds) == -1) {
free(info);
g_free(info);
return -1;
}