This commit is contained in:
Andrea Fioraldi 2022-06-10 17:17:43 +02:00
commit e08af84b06
974 changed files with 52557 additions and 33895 deletions

View File

@ -12,7 +12,7 @@ windows_msys2_task:
CIRRUS_SHELL: powershell
MSYS: winsymlinks:nativestrict
MSYSTEM: MINGW64
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2021-04-19/msys2-base-x86_64-20210419.sfx.exe
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2022-05-03/msys2-base-x86_64-20220503.sfx.exe
MSYS2_FINGERPRINT: 0
MSYS2_PACKAGES: "
diffutils git grep make pkg-config sed

72
.gitlab-ci.d/base.yml Normal file
View File

@ -0,0 +1,72 @@
# The order of rules defined here is critically important.
# They are evaluated in order and first match wins.
#
# Thus we group them into a number of stages, ordered from
# most restrictive to least restrictive
#
.base_job_template:
rules:
#############################################################
# Stage 1: exclude scenarios where we definitely don't
# want jobs to run
#############################################################
# Cirrus jobs can't run unless the creds / target repo are set
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
when: never
# Publishing jobs should only run on the default branch in upstream
- if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
when: never
# Non-publishing jobs should only run on staging branches in upstream
- if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
when: never
# Jobs only intended for forks should always be skipped on upstream
- if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
when: never
# Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
- if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
when: never
# Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
- if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"'
when: never
#############################################################
# Stage 2: fine tune execution of jobs in specific scenarios
# where the catch all logic is inapprorpaite
#############################################################
# Optional jobs should not be run unless manually triggered
- if: '$QEMU_JOB_OPTIONAL'
when: manual
allow_failure: true
# Skipped jobs should not be run unless manually triggered
- if: '$QEMU_JOB_SKIPPED'
when: manual
allow_failure: true
# Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
- if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"'
when: manual
allow_failure: true
#############################################################
# Stage 3: catch all logic applying to any job not matching
# an earlier criteria
#############################################################
# Forks pipeline jobs don't start automatically unless
# QEMU_CI=2 is set
- if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
when: manual
# Jobs can run if any jobs they depend on were successfull
- when: on_success

View File

@ -1,4 +1,5 @@
.native_build_job_template:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
before_script:
@ -26,7 +27,8 @@
make -j"$JOBS" $MAKE_CHECK_ARGS ;
fi
.native_test_job_template:
.common_test_job_template:
extends: .base_job_template
stage: test
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
script:
@ -37,8 +39,18 @@
# Avoid recompiling by hiding ninja with NINJA=":"
- make NINJA=":" $MAKE_CHECK_ARGS
.native_test_job_template:
extends: .common_test_job_template
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
expire_in: 7 days
paths:
- build/meson-logs/testlog.txt
reports:
junit: build/meson-logs/testlog.junit.xml
.avocado_test_job_template:
extends: .native_test_job_template
extends: .common_test_job_template
cache:
key: "${CI_JOB_NAME}-cache"
paths:
@ -67,15 +79,5 @@
after_script:
- cd build
- du -chs ${CI_PROJECT_DIR}/avocado-cache
rules:
# Only run these jobs if running on the mainstream namespace,
# or if the user set the QEMU_CI_AVOCADO_TESTING variable (either
# in its namespace setting or via git-push option, see documentation
# in /.gitlab-ci.yml of this repository).
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: on_success
- if: '$QEMU_CI_AVOCADO_TESTING'
when: on_success
# Otherwise, set to manual (the jobs are created but not run).
- when: manual
allow_failure: true
variables:
QEMU_JOB_AVOCADO: 1

View File

@ -42,6 +42,7 @@ build-system-ubuntu:
variables:
IMAGE: ubuntu2004
CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system
--enable-capstone
TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
microblazeel-softmmu mips64el-softmmu
MAKE_CHECK_ARGS: check-build
@ -109,7 +110,8 @@ crash-test-debian:
IMAGE: debian-amd64
script:
- cd build
- scripts/device-crash-test -q ./qemu-system-i386
- make check-venv
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386
build-system-fedora:
extends: .native_build_job_template
@ -118,7 +120,7 @@ build-system-fedora:
variables:
IMAGE: fedora
CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs
--enable-fdt=system --enable-slirp=system --enable-capstone=system
--enable-fdt=system --enable-slirp=system --enable-capstone
TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
MAKE_CHECK_ARGS: check-build
@ -154,8 +156,9 @@ crash-test-fedora:
IMAGE: fedora
script:
- cd build
- scripts/device-crash-test -q ./qemu-system-ppc
- scripts/device-crash-test -q ./qemu-system-riscv32
- make check-venv
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc
- tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32
build-system-centos:
extends: .native_build_job_template
@ -359,12 +362,11 @@ build-cfi-aarch64:
expire_in: 2 days
paths:
- build
rules:
variables:
# FIXME: This job is often failing, likely due to out-of-memory problems in
# the constrained containers of the shared runners. Thus this is marked as
# manual until the situation has been solved.
- when: manual
allow_failure: true
# skipped until the situation has been solved.
QEMU_JOB_SKIPPED: 1
check-cfi-aarch64:
extends: .native_test_job_template
@ -401,12 +403,11 @@ build-cfi-ppc64-s390x:
expire_in: 2 days
paths:
- build
rules:
variables:
# FIXME: This job is often failing, likely due to out-of-memory problems in
# the constrained containers of the shared runners. Thus this is marked as
# manual until the situation has been solved.
- when: manual
allow_failure: true
# skipped until the situation has been solved.
QEMU_JOB_SKIPPED: 1
check-cfi-ppc64-s390x:
extends: .native_test_job_template
@ -578,6 +579,7 @@ build-without-default-features:
MAKE_CHECK_ARGS: check-unit check-qtest SPEED=slow
build-libvhost-user:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/fedora:latest
needs:
@ -594,10 +596,13 @@ build-tools-and-docs-debian:
extends: .native_build_job_template
needs:
job: amd64-debian-container
# when running on 'master' we use pre-existing container
optional: true
variables:
IMAGE: debian-amd64
MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope
CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools
QEMU_JOB_PUBLISH: 1
artifacts:
expire_in: 2 days
paths:
@ -617,6 +622,7 @@ build-tools-and-docs-debian:
# that users can see the results of their commits, regardless
# of what topic branch they're currently using
pages:
extends: .base_job_template
image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest
stage: test
needs:
@ -634,10 +640,5 @@ pages:
artifacts:
paths:
- public
rules:
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: on_success
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: never
- if: '$CI_PROJECT_NAMESPACE != "qemu-project"'
when: on_success
variables:
QEMU_JOB_PUBLISH: 1

View File

@ -11,6 +11,7 @@
# special care, because we can't just override it at the GitLab CI job
# definition level or we risk breaking it completely.
.cirrus_build_job:
extends: .base_job_template
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
needs: []
@ -40,11 +41,8 @@
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
rules:
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
when: never
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
variables:
QEMU_JOB_CIRRUS: 1
x64-freebsd-12-build:
extends: .cirrus_build_job
@ -90,11 +88,11 @@ x64-macos-11-base-build:
# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
.cirrus_kvm_job:
extends: .base_job_template
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
needs: []
timeout: 80m
allow_failure: true
script:
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
@ -105,8 +103,10 @@ x64-macos-11-base-build:
<.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
rules:
- when: manual
variables:
QEMU_JOB_CIRRUS: 1
QEMU_JOB_OPTIONAL: 1
x86-netbsd:
extends: .cirrus_kvm_job

View File

@ -27,30 +27,26 @@ arm64-debian-cross-container:
armel-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-armel-cross
armhf-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-armhf-cross
# We never want to build hexagon in the CI system and by default we
# always want to refer to the master registry where it lives.
hexagon-cross-container:
extends: .base_job_template
image: docker:stable
stage: containers
rules:
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: never
- when: always
variables:
NAME: debian-hexagon-cross
GIT_DEPTH: 1
QEMU_JOB_ONLY_FORKS: 1
services:
- docker:dind
before_script:
@ -90,8 +86,7 @@ mips64-debian-cross-container:
mips64el-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-mips64el-cross
@ -104,8 +99,7 @@ mips-debian-cross-container:
mipsel-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-mipsel-cross
@ -118,14 +112,13 @@ powerpc-test-cross-container:
ppc64el-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-ppc64el-cross
riscv64-debian-cross-container:
extends: .container_job_template
stage: containers-layer2
stage: containers
# as we are currently based on 'sid/unstable' we may break so...
allow_failure: true
variables:
@ -135,6 +128,7 @@ riscv64-debian-cross-container:
riscv64-debian-test-cross-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian11-container']
variables:
NAME: debian-riscv64-test-cross

View File

@ -1,4 +1,5 @@
.container_job_template:
extends: .base_job_template
image: docker:stable
stage: containers
services:

View File

@ -14,16 +14,10 @@ amd64-debian11-container:
amd64-debian-container:
extends: .container_job_template
stage: containers-layer2
needs: ['amd64-debian10-container']
stage: containers
variables:
NAME: debian-amd64
amd64-ubuntu1804-container:
extends: .container_job_template
variables:
NAME: ubuntu1804
amd64-ubuntu2004-container:
extends: .container_job_template
variables:

View File

@ -1,4 +1,5 @@
.cross_system_build_job:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
timeout: 80m
@ -24,6 +25,7 @@
# KVM), and set extra options (such disabling other accelerators) via the
# $EXTRA_CONFIGURE_OPTS variable.
.cross_accel_build_job:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
timeout: 30m
@ -36,6 +38,7 @@
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
.cross_user_build_job:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
script:

View File

@ -62,6 +62,8 @@ cross-i386-user:
cross-i386-tci:
extends: .cross_accel_build_job
timeout: 60m
needs:
job: i386-fedora-cross-container
variables:
IMAGE: fedora-i386-cross
ACCEL: tcg-interpreter

View File

@ -1,6 +1,6 @@
# All ubuntu-20.04 jobs should run successfully in an environment
# setup by the scripts/ci/setup/qemu/build-environment.yml task
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
# "Install basic packages to build QEMU on Ubuntu 20.04"
ubuntu-20.04-aarch32-all:
needs: []

View File

@ -1,6 +1,6 @@
# All ubuntu-20.04 jobs should run successfully in an environment
# setup by the scripts/ci/setup/qemu/build-environment.yml task
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
# "Install basic packages to build QEMU on Ubuntu 20.04"
ubuntu-20.04-aarch64-all-linux-static:
needs: []

View File

@ -2,6 +2,7 @@
# https://gitlab.com/qemu-project/qemu/-/pipelines
include:
- local: '/.gitlab-ci.d/base.yml'
- local: '/.gitlab-ci.d/stages.yml'
- local: '/.gitlab-ci.d/edk2.yml'
- local: '/.gitlab-ci.d/opensbi.yml'

View File

@ -1,32 +1,30 @@
check-patch:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
needs:
job: amd64-centos8-container
image: python:3.10-alpine
needs: []
script:
- .gitlab-ci.d/check-patch.py
variables:
GIT_DEPTH: 1000
rules:
- if: '$CI_PROJECT_NAMESPACE == "qemu-project"'
when: never
- when: on_success
allow_failure: true
QEMU_JOB_ONLY_FORKS: 1
before_script:
- apk -U add git perl
allow_failure: true
check-dco:
extends: .base_job_template
stage: build
image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
needs:
job: amd64-centos8-container
image: python:3.10-alpine
needs: []
script: .gitlab-ci.d/check-dco.py
variables:
GIT_DEPTH: 1000
rules:
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
when: never
- when: on_success
before_script:
- apk -U add git
check-python-pipenv:
extends: .base_job_template
stage: test
image: $CI_REGISTRY_IMAGE/qemu/python:latest
script:
@ -37,6 +35,7 @@ check-python-pipenv:
job: python-container
check-python-tox:
extends: .base_job_template
stage: test
image: $CI_REGISTRY_IMAGE/qemu/python:latest
script:
@ -44,8 +43,6 @@ check-python-tox:
variables:
GIT_DEPTH: 1
QEMU_TOX_EXTRA_ARGS: --skip-missing-interpreters=false
QEMU_JOB_OPTIONAL: 1
needs:
job: python-container
rules:
- when: manual
allow_failure: true

View File

@ -1,4 +1,5 @@
.shared_msys2_builder:
extends: .base_job_template
tags:
- shared-windows
- windows
@ -16,7 +17,7 @@
}
- If ( !(Test-Path -Path msys64\var\cache\msys2.exe ) ) {
Invoke-WebRequest
"https://github.com/msys2/msys2-installer/releases/download/2021-07-25/msys2-base-x86_64-20210725.sfx.exe"
"https://github.com/msys2/msys2-installer/releases/download/2022-05-03/msys2-base-x86_64-20220503.sfx.exe"
-outfile "msys64\var\cache\msys2.exe"
}
- msys64\var\cache\msys2.exe -y
@ -57,7 +58,7 @@ msys2-64bit:
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
--enable-capstone=system --without-default-devices'
--enable-capstone --without-default-devices'
- .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
- .\msys64\usr\bin\bash -lc 'make -j2'
- .\msys64\usr\bin\bash -lc 'make check'
@ -90,7 +91,6 @@ msys2-32bit:
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
- mkdir output
- cd output
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu
--enable-capstone=system"
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu"
- ..\msys64\usr\bin\bash -lc 'make -j2'
- ..\msys64\usr\bin\bash -lc 'make check'

3
.gitmodules vendored
View File

@ -31,9 +31,6 @@
[submodule "ui/keycodemapdb"]
path = ui/keycodemapdb
url = https://gitlab.com/qemu-project/keycodemapdb.git
[submodule "capstone"]
path = capstone
url = https://gitlab.com/qemu-project/capstone.git
[submodule "roms/seabios-hppa"]
path = roms/seabios-hppa
url = https://gitlab.com/qemu-project/seabios-hppa.git

View File

@ -62,7 +62,8 @@ Greg Kurz <groug@kaod.org> <gkurz@linux.vnet.ibm.com>
Huacai Chen <chenhuacai@kernel.org> <chenhc@lemote.com>
Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn>
James Hogan <jhogan@kernel.org> <james.hogan@imgtec.com>
Leif Lindholm <leif@nuviainc.com> <leif.lindholm@linaro.org>
Leif Lindholm <quic_llindhol@quicinc.com> <leif.lindholm@linaro.org>
Leif Lindholm <quic_llindhol@quicinc.com> <leif@nuviainc.com>
Radoslaw Biernacki <rad@semihalf.com> <radoslaw.biernacki@linaro.org>
Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>

View File

@ -22,15 +22,12 @@ config TPM
config VHOST_USER
bool
select VHOST
config VHOST_VDPA
bool
select VHOST
config VHOST_KERNEL
bool
select VHOST
config VIRTFS
bool

View File

@ -165,7 +165,6 @@ F: tests/qtest/arm-cpu-features.c
F: hw/arm/
F: hw/cpu/a*mpcore.c
F: include/hw/cpu/a*mpcore.h
F: disas/arm.c
F: disas/arm-a64.cc
F: disas/libvixl/
F: docs/system/target-arm.rst
@ -213,6 +212,13 @@ S: Maintained
F: target/hppa/
F: disas/hppa.c
LoongArch TCG CPUs
M: Song Gao <gaosong@loongson.cn>
M: Xiaojuan Yang <yangxiaojuan@loongson.cn>
S: Maintained
F: target/loongarch/
F: tests/tcg/loongarch64/
M68K TCG CPUs
M: Laurent Vivier <laurent@vivier.eu>
S: Maintained
@ -272,7 +278,6 @@ F: target/ppc/
F: hw/ppc/ppc.c
F: hw/ppc/ppc_booke.c
F: include/hw/ppc/ppc.h
F: disas/ppc.c
RISC-V TCG CPUs
M: Palmer Dabbelt <palmer@dabbelt.com>
@ -335,7 +340,6 @@ F: target/i386/tcg/
F: tests/tcg/i386/
F: tests/tcg/x86_64/
F: hw/i386/
F: disas/i386.c
F: docs/system/cpu-models-x86*
T: git https://gitlab.com/ehabkost/qemu.git x86-next
@ -491,7 +495,6 @@ Guest CPU Cores (HAXM)
---------------------
X86 HAXM CPUs
M: Wenchao Wang <wenchao.wang@intel.com>
M: Colin Xu <colin.xu@intel.com>
L: haxm-team@intel.com
W: https://github.com/intel/haxm/issues
S: Maintained
@ -889,7 +892,7 @@ F: include/hw/ssi/imx_spi.h
SBSA-REF
M: Radoslaw Biernacki <rad@semihalf.com>
M: Peter Maydell <peter.maydell@linaro.org>
R: Leif Lindholm <leif@nuviainc.com>
R: Leif Lindholm <quic_llindhol@quicinc.com>
L: qemu-arm@nongnu.org
S: Maintained
F: hw/arm/sbsa-ref.c
@ -1113,9 +1116,30 @@ S: Odd Fixes
F: configs/devices/hppa-softmmu/default.mak
F: hw/hppa/
F: hw/net/*i82596*
F: hw/misc/lasi.c
F: hw/pci-host/dino.c
F: include/hw/misc/lasi.h
F: include/hw/net/lasi_82596.h
F: include/hw/pci-host/dino.h
F: pc-bios/hppa-firmware.img
LoongArch Machines
------------------
Virt
M: Xiaojuan Yang <yangxiaojuan@loongson.cn>
M: Song Gao <gaosong@loongson.cn>
S: Maintained
F: docs/system/loongarch/loongson3.rst
F: configs/targets/loongarch64-softmmu.mak
F: configs/devices/loongarch64-softmmu/default.mak
F: hw/loongarch/
F: include/hw/loongarch/virt.h
F: include/hw/intc/loongarch_*.h
F: hw/intc/loongarch_*.c
F: include/hw/pci-host/ls7a.h
F: hw/rtc/ls7a_rtc.c
F: gdb-xml/loongarch*.xml
M68K Machines
-------------
an5206
@ -1776,6 +1800,12 @@ F: include/hw/block/fdc.h
F: tests/qtest/fdc-test.c
T: git https://gitlab.com/jsnow/qemu.git ide
Hyper-V VMBus
M: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
S: Odd Fixes
F: hw/hyperv/vmbus.c
F: include/hw/hyperv/vmbus*.h
OMAP
M: Peter Maydell <peter.maydell@linaro.org>
L: qemu-arm@nongnu.org
@ -2011,8 +2041,7 @@ M: Halil Pasic <pasic@linux.ibm.com>
M: Eric Farman <farman@linux.ibm.com>
S: Supported
F: hw/s390x/virtio-ccw*.[hc]
F: hw/s390x/vhost-vsock-ccw.c
F: hw/s390x/vhost-user-fs-ccw.c
F: hw/s390x/vhost-*-ccw.c
T: git https://gitlab.com/cohuck/qemu.git s390-next
T: git https://github.com/borntraeger/qemu.git s390-next
L: qemu-s390x@nongnu.org
@ -2169,6 +2198,7 @@ Generic Loader
M: Alistair Francis <alistair@alistair23.me>
S: Maintained
F: hw/core/generic-loader.c
F: hw/core/uboot_image.h
F: include/hw/core/generic-loader.h
F: docs/system/generic-loader.rst
@ -2544,6 +2574,13 @@ F: qapi/block*.json
F: qapi/transaction.json
T: git https://repo.or.cz/qemu/armbru.git block-next
Compute Express Link
M: Ben Widawsky <ben.widawsky@intel.com>
M: Jonathan Cameron <jonathan.cameron@huawei.com>
S: Supported
F: hw/cxl/
F: include/hw/cxl/
Dirty Bitmaps
M: Eric Blake <eblake@redhat.com>
M: Vladimir Sementsov-Ogievskiy <v.sementsov-og@mail.ru>
@ -3089,7 +3126,7 @@ F: include/qemu/yank.h
F: qapi/yank.json
COLO Framework
M: zhanghailiang <zhang.zhanghailiang@huawei.com>
M: Hailiang Zhang <zhanghailiang@xfusion.com>
S: Maintained
F: migration/colo*
F: include/migration/colo.h
@ -3267,13 +3304,11 @@ M: Richard Henderson <richard.henderson@linaro.org>
S: Maintained
L: qemu-arm@nongnu.org
F: tcg/arm/
F: disas/arm.c
i386 TCG target
M: Richard Henderson <richard.henderson@linaro.org>
S: Maintained
F: tcg/i386/
F: disas/i386.c
LoongArch64 TCG target
M: WANG Xuerui <git@xen0n.name>
@ -3293,7 +3328,6 @@ PPC TCG target
M: Richard Henderson <richard.henderson@linaro.org>
S: Odd Fixes
F: tcg/ppc/
F: disas/ppc.c
RISC-V TCG target
M: Palmer Dabbelt <palmer@dabbelt.com>
@ -3369,6 +3403,7 @@ F: qemu-nbd.*
F: blockdev-nbd.c
F: docs/interop/nbd.txt
F: docs/tools/qemu-nbd.rst
F: tests/qemu-iotests/tests/*nbd*
T: git https://repo.or.cz/qemu/ericb.git nbd
T: git https://src.openvz.org/scm/~vsementsov/qemu.git nbd

View File

@ -143,10 +143,9 @@ MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS))))
MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq)
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
-d keepdepfile
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
ninja-cmd-goals += $(foreach t, $(.check.build-suites), $(.check-$t.deps))
ninja-cmd-goals += $(foreach t, $(.bench.build-suites), $(.bench-$t.deps))
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))))
makefile-targets := build.ninja ctags TAGS cscope dist clean uninstall
# "ninja -t targets" also lists all prerequisites. If build system
@ -160,15 +159,12 @@ $(ninja-targets): run-ninja
# --output-sync line.
run-ninja: config-host.mak
ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),)
+$(quiet-@)$(if $(MAKE.nq),@:, $(NINJA) -d keepdepfile \
$(NINJAFLAGS) $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
+$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \
$(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat)
endif
endif
# Force configure to re-run if the API symbols are updated
ifeq ($(CONFIG_PLUGIN),y)
config-host.mak: $(SRC_PATH)/plugins/qemu-plugins.symbols
.PHONY: plugins
plugins:
$(call quiet-command,\

View File

@ -120,12 +120,12 @@ static void hvf_set_phys_mem(MemoryRegionSection *section, bool add)
{
hvf_slot *mem;
MemoryRegion *area = section->mr;
bool writeable = !area->readonly && !area->rom_device;
bool writable = !area->readonly && !area->rom_device;
hv_memory_flags_t flags;
uint64_t page_size = qemu_real_host_page_size();
if (!memory_region_is_ram(area)) {
if (writeable) {
if (writable) {
return;
} else if (!memory_region_is_romd(area)) {
/*

View File

@ -1346,13 +1346,13 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
KVMSlot *mem;
int err;
MemoryRegion *mr = section->mr;
bool writeable = !mr->readonly && !mr->rom_device;
bool writable = !mr->readonly && !mr->rom_device;
hwaddr start_addr, size, slot_size, mr_offset;
ram_addr_t ram_start_offset;
void *ram;
if (!memory_region_is_ram(mr)) {
if (writeable || !kvm_readonly_mem_allowed) {
if (writable || !kvm_readonly_mem_allowed) {
return;
} else if (!mr->romd_mode) {
/* If the memory device is not in romd_mode, then we actually want

View File

@ -84,8 +84,7 @@ void icount_handle_deadline(void)
* Don't interrupt cpu thread, when these events are waiting
* (i.e., there is no checkpoint)
*/
if (deadline == 0
&& (replay_mode != REPLAY_MODE_PLAY || replay_has_checkpoint())) {
if (deadline == 0) {
icount_notify_aio_contexts();
}
}
@ -109,7 +108,7 @@ void icount_prepare_for_run(CPUState *cpu)
replay_mutex_lock();
if (cpu->icount_budget == 0 && replay_has_checkpoint()) {
if (cpu->icount_budget == 0) {
icount_notify_aio_contexts();
}
}

View File

@ -7,8 +7,8 @@
* See the COPYING file in the top-level directory.
*/
#ifndef TCG_CPUS_ICOUNT_H
#define TCG_CPUS_ICOUNT_H
#ifndef TCG_ACCEL_OPS_ICOUNT_H
#define TCG_ACCEL_OPS_ICOUNT_H
void icount_handle_deadline(void);
void icount_prepare_for_run(CPUState *cpu);
@ -16,4 +16,4 @@ void icount_process_data(CPUState *cpu);
void icount_handle_interrupt(CPUState *cpu, int mask);
#endif /* TCG_CPUS_ICOUNT_H */
#endif /* TCG_ACCEL_OPS_ICOUNT_H */

View File

@ -7,8 +7,8 @@
* See the COPYING file in the top-level directory.
*/
#ifndef TCG_CPUS_MTTCG_H
#define TCG_CPUS_MTTCG_H
#ifndef TCG_ACCEL_OPS_MTTCG_H
#define TCG_ACCEL_OPS_MTTCG_H
/* kick MTTCG vCPU thread */
void mttcg_kick_vcpu_thread(CPUState *cpu);
@ -16,4 +16,4 @@ void mttcg_kick_vcpu_thread(CPUState *cpu);
/* start an mttcg vCPU thread */
void mttcg_start_vcpu_thread(CPUState *cpu);
#endif /* TCG_CPUS_MTTCG_H */
#endif /* TCG_ACCEL_OPS_MTTCG_H */

View File

@ -7,8 +7,8 @@
* See the COPYING file in the top-level directory.
*/
#ifndef TCG_CPUS_RR_H
#define TCG_CPUS_RR_H
#ifndef TCG_ACCEL_OPS_RR_H
#define TCG_ACCEL_OPS_RR_H
#define TCG_KICK_PERIOD (NANOSECONDS_PER_SECOND / 10)
@ -18,4 +18,4 @@ void rr_kick_vcpu_thread(CPUState *unused);
/* start the round robin vcpu thread */
void rr_start_vcpu_thread(CPUState *cpu);
#endif /* TCG_CPUS_RR_H */
#endif /* TCG_ACCEL_OPS_RR_H */

View File

@ -9,8 +9,8 @@
* See the COPYING file in the top-level directory.
*/
#ifndef TCG_CPUS_H
#define TCG_CPUS_H
#ifndef TCG_ACCEL_OPS_H
#define TCG_ACCEL_OPS_H
#include "sysemu/cpus.h"
@ -19,4 +19,4 @@ int tcg_cpus_exec(CPUState *cpu);
void tcg_handle_interrupt(CPUState *cpu, int mask);
void tcg_cpu_init_cflags(CPUState *cpu, bool parallel);
#endif /* TCG_CPUS_H */
#endif /* TCG_ACCEL_OPS_H */

View File

@ -101,10 +101,10 @@ MMUAccessType adjust_signal_pc(uintptr_t *pc, bool is_write)
* Return true if the write fault has been handled, and should be re-tried.
*
* Note that it is important that we don't call page_unprotect() unless
* this is really a "write to nonwriteable page" fault, because
* this is really a "write to nonwritable page" fault, because
* page_unprotect() assumes that if it is called for an access to
* a page that's writeable this means we had two threads racing and
* another thread got there first and already made the page writeable;
* a page that's writable this means we had two threads racing and
* another thread got there first and already made the page writable;
* so we will retry the access. If we were to call page_unprotect()
* for some other kind of fault that should really be passed to the
* guest, we'd end up in an infinite loop of retrying the faulting access.

View File

@ -2099,13 +2099,19 @@ static void audio_validate_opts(Audiodev *dev, Error **errp)
void audio_parse_option(const char *opt)
{
AudiodevListEntry *e;
Audiodev *dev = NULL;
Visitor *v = qobject_input_visitor_new_str(opt, "driver", &error_fatal);
visit_type_Audiodev(v, NULL, &dev, &error_fatal);
visit_free(v);
audio_define(dev);
}
void audio_define(Audiodev *dev)
{
AudiodevListEntry *e;
audio_validate_opts(dev, &error_fatal);
e = g_new0(AudiodevListEntry, 1);

View File

@ -168,6 +168,7 @@ void audio_sample_to_uint64(const void *samples, int pos,
void audio_sample_from_uint64(void *samples, int pos,
uint64_t left, uint64_t right);
void audio_define(Audiodev *audio);
void audio_parse_option(const char *opt);
void audio_init_audiodevs(void);
void audio_legacy_help(void);

View File

@ -274,7 +274,7 @@ static void host_memory_backend_init(Object *obj)
backend->merge = machine_mem_merge(machine);
backend->dump = machine_dump_guest_core(machine);
backend->reserve = true;
backend->prealloc_threads = 1;
backend->prealloc_threads = machine->smp.cpus;
}
static void host_memory_backend_post_init(Object *obj)

View File

@ -12,9 +12,13 @@ softmmu_ss.add([files(
softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('rng-random.c'))
softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files('hostmem-file.c'))
softmmu_ss.add(when: 'CONFIG_LINUX', if_true: files('hostmem-memfd.c'))
softmmu_ss.add(when: ['CONFIG_VHOST_USER', 'CONFIG_VIRTIO'], if_true: files('vhost-user.c'))
if have_vhost_user
softmmu_ss.add(when: 'CONFIG_VIRTIO', if_true: files('vhost-user.c'))
endif
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost.c'))
softmmu_ss.add(when: ['CONFIG_VIRTIO_CRYPTO', 'CONFIG_VHOST_CRYPTO'], if_true: files('cryptodev-vhost-user.c'))
if have_vhost_user_crypto
softmmu_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('cryptodev-vhost-user.c'))
endif
softmmu_ss.add(when: gio, if_true: files('dbus-vmstate.c'))
softmmu_ss.add(when: 'CONFIG_SGX', if_true: files('hostmem-epc.c'))

View File

@ -48,24 +48,10 @@ static bool rng_backend_prop_get_opened(Object *obj, Error **errp)
static void rng_backend_complete(UserCreatable *uc, Error **errp)
{
object_property_set_bool(OBJECT(uc), "opened", true, errp);
}
static void rng_backend_prop_set_opened(Object *obj, bool value, Error **errp)
{
RngBackend *s = RNG_BACKEND(obj);
RngBackend *s = RNG_BACKEND(uc);
RngBackendClass *k = RNG_BACKEND_GET_CLASS(s);
Error *local_err = NULL;
if (value == s->opened) {
return;
}
if (!value && s->opened) {
error_setg(errp, QERR_PERMISSION_DENIED);
return;
}
if (k->opened) {
k->opened(s, &local_err);
if (local_err) {
@ -122,7 +108,7 @@ static void rng_backend_class_init(ObjectClass *oc, void *data)
object_class_property_add_bool(oc, "opened",
rng_backend_prop_get_opened,
rng_backend_prop_set_opened);
NULL);
}
static const TypeInfo rng_backend_info = {

View File

@ -6298,7 +6298,7 @@ const char *bdrv_get_device_or_node_name(const BlockDriverState *bs)
int bdrv_get_flags(BlockDriverState *bs)
{
GLOBAL_STATE_CODE();
IO_CODE();
return bs->open_flags;
}

View File

@ -22,11 +22,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BLOCK_COPY_ON_READ
#define BLOCK_COPY_ON_READ
#ifndef BLOCK_COPY_ON_READ_H
#define BLOCK_COPY_ON_READ_H
#include "block/block_int.h"
void bdrv_cor_filter_drop(BlockDriverState *cor_filter_bs);
#endif /* BLOCK_COPY_ON_READ */
#endif /* BLOCK_COPY_ON_READ_H */

View File

@ -22,8 +22,8 @@
* THE SOFTWARE.
*/
#ifndef BLOCK_COROUTINES_INT_H
#define BLOCK_COROUTINES_INT_H
#ifndef BLOCK_COROUTINES_H
#define BLOCK_COROUTINES_H
#include "block/block_int.h"
@ -129,4 +129,4 @@ blk_do_pdiscard(BlockBackend *blk, int64_t offset, int64_t bytes);
int generated_co_wrapper blk_do_flush(BlockBackend *blk);
#endif /* BLOCK_COROUTINES_INT_H */
#endif /* BLOCK_COROUTINES_H */

View File

@ -751,7 +751,7 @@ void bdrv_drain_all(void)
*
* This function should be called when a tracked request is completing.
*/
static void tracked_request_end(BdrvTrackedRequest *req)
static void coroutine_fn tracked_request_end(BdrvTrackedRequest *req)
{
if (req->serialising) {
qatomic_dec(&req->bs->serialising_in_flight);

View File

@ -1296,7 +1296,8 @@ static int validate_compression_type(BDRVQcow2State *s, Error **errp)
/* Called with s->lock held. */
static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
int flags, Error **errp)
int flags, bool open_data_file,
Error **errp)
{
ERRP_GUARD();
BDRVQcow2State *s = bs->opaque;
@ -1614,50 +1615,52 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
goto fail;
}
/* Open external data file */
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
&child_of_bds, BDRV_CHILD_DATA,
true, errp);
if (*errp) {
ret = -EINVAL;
goto fail;
}
if (open_data_file) {
/* Open external data file */
s->data_file = bdrv_open_child(NULL, options, "data-file", bs,
&child_of_bds, BDRV_CHILD_DATA,
true, errp);
if (*errp) {
ret = -EINVAL;
goto fail;
}
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
if (!s->data_file && s->image_data_file) {
s->data_file = bdrv_open_child(s->image_data_file, options,
"data-file", bs, &child_of_bds,
BDRV_CHILD_DATA, false, errp);
if (s->incompatible_features & QCOW2_INCOMPAT_DATA_FILE) {
if (!s->data_file && s->image_data_file) {
s->data_file = bdrv_open_child(s->image_data_file, options,
"data-file", bs, &child_of_bds,
BDRV_CHILD_DATA, false, errp);
if (!s->data_file) {
ret = -EINVAL;
goto fail;
}
}
if (!s->data_file) {
error_setg(errp, "'data-file' is required for this image");
ret = -EINVAL;
goto fail;
}
}
if (!s->data_file) {
error_setg(errp, "'data-file' is required for this image");
ret = -EINVAL;
goto fail;
}
/* No data here */
bs->file->role &= ~BDRV_CHILD_DATA;
/* No data here */
bs->file->role &= ~BDRV_CHILD_DATA;
/* Must succeed because we have given up permissions if anything */
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
} else {
if (s->data_file) {
error_setg(errp, "'data-file' can only be set for images with an "
"external data file");
ret = -EINVAL;
goto fail;
}
/* Must succeed because we have given up permissions if anything */
bdrv_child_refresh_perms(bs, bs->file, &error_abort);
} else {
if (s->data_file) {
error_setg(errp, "'data-file' can only be set for images with "
"an external data file");
ret = -EINVAL;
goto fail;
}
s->data_file = bs->file;
s->data_file = bs->file;
if (data_file_is_raw(bs)) {
error_setg(errp, "data-file-raw requires a data file");
ret = -EINVAL;
goto fail;
if (data_file_is_raw(bs)) {
error_setg(errp, "data-file-raw requires a data file");
ret = -EINVAL;
goto fail;
}
}
}
@ -1839,7 +1842,7 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
fail:
g_free(s->image_data_file);
if (has_data_file(bs)) {
if (open_data_file && has_data_file(bs)) {
bdrv_unref_child(bs, s->data_file);
s->data_file = NULL;
}
@ -1876,7 +1879,8 @@ static void coroutine_fn qcow2_open_entry(void *opaque)
BDRVQcow2State *s = qoc->bs->opaque;
qemu_co_mutex_lock(&s->lock);
qoc->ret = qcow2_do_open(qoc->bs, qoc->options, qoc->flags, qoc->errp);
qoc->ret = qcow2_do_open(qoc->bs, qoc->options, qoc->flags, true,
qoc->errp);
qemu_co_mutex_unlock(&s->lock);
}
@ -2714,7 +2718,7 @@ static int qcow2_inactivate(BlockDriverState *bs)
return result;
}
static void qcow2_close(BlockDriverState *bs)
static void qcow2_do_close(BlockDriverState *bs, bool close_data_file)
{
BDRVQcow2State *s = bs->opaque;
qemu_vfree(s->l1_table);
@ -2740,7 +2744,7 @@ static void qcow2_close(BlockDriverState *bs)
g_free(s->image_backing_file);
g_free(s->image_backing_format);
if (has_data_file(bs)) {
if (close_data_file && has_data_file(bs)) {
bdrv_unref_child(bs, s->data_file);
s->data_file = NULL;
}
@ -2749,11 +2753,17 @@ static void qcow2_close(BlockDriverState *bs)
qcow2_free_snapshots(bs);
}
static void qcow2_close(BlockDriverState *bs)
{
qcow2_do_close(bs, true);
}
static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
Error **errp)
{
ERRP_GUARD();
BDRVQcow2State *s = bs->opaque;
BdrvChild *data_file;
int flags = s->flags;
QCryptoBlock *crypto = NULL;
QDict *options;
@ -2767,14 +2777,24 @@ static void coroutine_fn qcow2_co_invalidate_cache(BlockDriverState *bs,
crypto = s->crypto;
s->crypto = NULL;
qcow2_close(bs);
/*
* Do not reopen s->data_file (i.e., have qcow2_do_close() not close it,
* and then prevent qcow2_do_open() from opening it), because this function
* runs in the I/O path and as such we must not invoke global-state
* functions like bdrv_unref_child() and bdrv_open_child().
*/
qcow2_do_close(bs, false);
data_file = s->data_file;
memset(s, 0, sizeof(BDRVQcow2State));
s->data_file = data_file;
options = qdict_clone_shallow(bs->options);
flags &= ~BDRV_O_INACTIVE;
qemu_co_mutex_lock(&s->lock);
ret = qcow2_do_open(bs, options, flags, errp);
ret = qcow2_do_open(bs, options, flags, false, errp);
qemu_co_mutex_unlock(&s->lock);
qobject_unref(options);
if (ret < 0) {

View File

@ -178,6 +178,10 @@ typedef struct BDRVVmdkState {
char *create_type;
} BDRVVmdkState;
typedef struct BDRVVmdkReopenState {
bool *extents_using_bs_file;
} BDRVVmdkReopenState;
typedef struct VmdkMetaData {
unsigned int l1_index;
unsigned int l2_index;
@ -400,15 +404,63 @@ static int vmdk_is_cid_valid(BlockDriverState *bs)
return 1;
}
/* We have nothing to do for VMDK reopen, stubs just return success */
static int vmdk_reopen_prepare(BDRVReopenState *state,
BlockReopenQueue *queue, Error **errp)
{
BDRVVmdkState *s;
BDRVVmdkReopenState *rs;
int i;
assert(state != NULL);
assert(state->bs != NULL);
assert(state->opaque == NULL);
s = state->bs->opaque;
rs = g_new0(BDRVVmdkReopenState, 1);
state->opaque = rs;
/*
* Check whether there are any extents stored in bs->file; if bs->file
* changes, we will need to update their .file pointers to follow suit
*/
rs->extents_using_bs_file = g_new(bool, s->num_extents);
for (i = 0; i < s->num_extents; i++) {
rs->extents_using_bs_file[i] = s->extents[i].file == state->bs->file;
}
return 0;
}
static void vmdk_reopen_clean(BDRVReopenState *state)
{
BDRVVmdkReopenState *rs = state->opaque;
g_free(rs->extents_using_bs_file);
g_free(rs);
state->opaque = NULL;
}
static void vmdk_reopen_commit(BDRVReopenState *state)
{
BDRVVmdkState *s = state->bs->opaque;
BDRVVmdkReopenState *rs = state->opaque;
int i;
for (i = 0; i < s->num_extents; i++) {
if (rs->extents_using_bs_file[i]) {
s->extents[i].file = state->bs->file;
}
}
vmdk_reopen_clean(state);
}
static void vmdk_reopen_abort(BDRVReopenState *state)
{
vmdk_reopen_clean(state);
}
static int vmdk_parent_open(BlockDriverState *bs)
{
char *p_name;
@ -3072,6 +3124,8 @@ static BlockDriver bdrv_vmdk = {
.bdrv_open = vmdk_open,
.bdrv_co_check = vmdk_co_check,
.bdrv_reopen_prepare = vmdk_reopen_prepare,
.bdrv_reopen_commit = vmdk_reopen_commit,
.bdrv_reopen_abort = vmdk_reopen_abort,
.bdrv_child_perm = bdrv_default_perms,
.bdrv_co_preadv = vmdk_co_preadv,
.bdrv_co_pwritev = vmdk_co_pwritev,

View File

@ -30,18 +30,23 @@ typedef struct NBDServerData {
} NBDServerData;
static NBDServerData *nbd_server;
static bool is_qemu_nbd;
static int qemu_nbd_connections = -1; /* Non-negative if this is qemu-nbd */
static void nbd_update_server_watch(NBDServerData *s);
void nbd_server_is_qemu_nbd(bool value)
void nbd_server_is_qemu_nbd(int max_connections)
{
is_qemu_nbd = value;
qemu_nbd_connections = max_connections;
}
bool nbd_server_is_running(void)
{
return nbd_server || is_qemu_nbd;
return nbd_server || qemu_nbd_connections >= 0;
}
int nbd_server_max_connections(void)
{
return nbd_server ? nbd_server->max_connections : qemu_nbd_connections;
}
static void nbd_blockdev_client_closed(NBDClient *client, bool ignored)

View File

@ -17,5 +17,5 @@ static inline bool regpairs_aligned(void *cpu_env)
return true;
}
#endif /* ! TARGET_H */
#endif /* TARGET_H */

View File

@ -17,12 +17,12 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_H_
#define _TARGET_ARCH_H_
#ifndef TARGET_ARCH_H
#define TARGET_ARCH_H
#include "qemu.h"
void target_cpu_set_tls(CPUARMState *env, target_ulong newtls);
target_ulong target_cpu_get_tls(CPUARMState *env);
#endif /* !_TARGET_ARCH_H_ */
#endif /* TARGET_ARCH_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_CPU_H_
#define _TARGET_ARCH_CPU_H_
#ifndef TARGET_ARCH_CPU_H
#define TARGET_ARCH_CPU_H
#include "target_arch.h"
#include "signal-common.h"
@ -210,4 +210,4 @@ static inline void target_cpu_reset(CPUArchState *env)
{
}
#endif /* !_TARGET_ARCH_CPU_H */
#endif /* TARGET_ARCH_CPU_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_ELF_H_
#define _TARGET_ARCH_ELF_H_
#ifndef TARGET_ARCH_ELF_H
#define TARGET_ARCH_ELF_H
#define ELF_START_MMAP 0x80000000
#define ELF_ET_DYN_LOAD_ADDR 0x500000
@ -125,4 +126,4 @@ static uint32_t get_elf_hwcap2(void)
#undef GET_FEATURE
#undef GET_FEATURE_ID
#endif /* _TARGET_ARCH_ELF_H_ */
#endif /* TARGET_ARCH_ELF_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_REG_H_
#define _TARGET_ARCH_REG_H_
#ifndef TARGET_ARCH_REG_H
#define TARGET_ARCH_REG_H
/* See sys/arm/include/reg.h */
typedef struct target_reg {
@ -57,4 +57,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUARMState *env)
#undef tswapreg
#endif /* !_TARGET_ARCH_REG_H_ */
#endif /* TARGET_ARCH_REG_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SIGNAL_H_
#define _TARGET_ARCH_SIGNAL_H_
#ifndef TARGET_ARCH_SIGNAL_H
#define TARGET_ARCH_SIGNAL_H
#include "cpu.h"
@ -85,4 +86,4 @@ struct target_sigframe {
target_mcontext_vfp_t sf_vfp; /* actual saved VFP context */
};
#endif /* !_TARGET_ARCH_SIGNAL_H_ */
#endif /* TARGET_ARCH_SIGNAL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SIGTRAMP_H_
#define _TARGET_ARCH_SIGTRAMP_H_
#ifndef TARGET_ARCH_SIGTRAMP_H
#define TARGET_ARCH_SIGTRAMP_H
/* Compare to arm/arm/locore.S ENTRY_NP(sigcode) */
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
@ -46,4 +46,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
return memcpy_to_target(offset, sigtramp_code, TARGET_SZSIGCODE);
}
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
#endif /* TARGET_ARCH_SIGTRAMP_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SYSARCH_H_
#define _TARGET_ARCH_SYSARCH_H_
#ifndef TARGET_ARCH_SYSARCH_H
#define TARGET_ARCH_SYSARCH_H
#include "target_syscall.h"
#include "target_arch.h"
@ -75,4 +75,4 @@ static inline void do_freebsd_arch_print_sysarch(
}
}
#endif /*!_TARGET_ARCH_SYSARCH_H_ */
#endif /* TARGET_ARCH_SYSARCH_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_THREAD_H_
#define _TARGET_ARCH_THREAD_H_
#ifndef TARGET_ARCH_THREAD_H
#define TARGET_ARCH_THREAD_H
/* Compare to arm/arm/vm_machdep.c cpu_set_upcall_kse() */
static inline void target_thread_set_upcall(CPUARMState *env, abi_ulong entry,
@ -77,4 +78,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
*/
}
#endif /* !_TARGET_ARCH_THREAD_H_ */
#endif /* TARGET_ARCH_THREAD_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_VMPARAM_H_
#define _TARGET_ARCH_VMPARAM_H_
#ifndef TARGET_ARCH_VMPARAM_H
#define TARGET_ARCH_VMPARAM_H
#include "cpu.h"
@ -45,4 +46,4 @@ static inline void set_second_rval(CPUARMState *state, abi_ulong retval2)
state->regs[1] = retval2;
}
#endif /* ! _TARGET_ARCH_VMPARAM_H_ */
#endif /* TARGET_ARCH_VMPARAM_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SYSCALL_H_
#define _TARGET_ARCH_SYSCALL_H_
#ifndef ARM_TARGET_SYSCALL_H
#define ARM_TARGET_SYSCALL_H
struct target_pt_regs {
abi_long uregs[17];
@ -52,4 +52,4 @@ struct target_pt_regs {
#define TARGET_HW_MACHINE "arm"
#define TARGET_HW_MACHINE_ARCH "armv7"
#endif /* !_TARGET_ARCH_SYSCALL_H_ */
#endif /* ARM_TARGET_SYSCALL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BSD_FILE_H_
#define BSD_FILE_H_
#ifndef BSD_FILE_H
#define BSD_FILE_H
#include "qemu/path.h"
@ -27,4 +27,4 @@ extern struct iovec *lock_iovec(int type, abi_ulong target_addr, int count,
extern void unlock_iovec(struct iovec *vec, abi_ulong target_addr, int count,
int copy);
#endif /* !BSD_FILE_H_ */
#endif /* BSD_FILE_H */

View File

@ -34,8 +34,8 @@
* @(#)errno.h 8.5 (Berkeley) 1/21/94
*/
#ifndef _ERRNO_DEFS_H_
#define _ERRNO_DEFS_H_
#ifndef ERRNO_DEFS_H
#define ERRNO_DEFS_H
#define TARGET_EPERM 1 /* Operation not permitted */
#define TARGET_ENOENT 2 /* No such file or directory */
@ -157,4 +157,4 @@
_Static_assert(TARGET_ERESTART == QEMU_ERESTARTSYS,
"TARGET_ERESTART and QEMU_ERESTARTSYS expected to match");
#endif /* ! _ERRNO_DEFS_H_ */
#endif /* ERRNO_DEFS_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _HOST_OS_H_
#define _HOST_OS_H_
#ifndef HOST_OS_H
#define HOST_OS_H
#define HOST_DEFAULT_BSD_TYPE target_freebsd
#endif /*!_HOST_OS_H_ */
#endif /* HOST_OS_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_ELF_H_
#define _TARGET_OS_ELF_H_
#ifndef TARGET_OS_ELF_H
#define TARGET_OS_ELF_H
#include "target_arch_elf.h"
#include "elf.h"
@ -134,4 +135,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
return sp;
}
#endif /* _TARGET_OS_ELF_H_ */
#endif /* TARGET_OS_ELF_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_SIGINFO_H_
#define _TARGET_OS_SIGINFO_H_
#ifndef TARGET_OS_SIGINFO_H
#define TARGET_OS_SIGINFO_H
#define TARGET_NSIG 128
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
@ -155,4 +156,4 @@ struct target_sigevent {
#define TARGET_FPE_FLTINV (7) /* Invalid floating point operation. */
#define TARGET_FPE_FLTSUB (8) /* Subscript out of range. */
#endif /* !_TARGET_OS_SIGINFO_H_ */
#endif /* TARGET_OS_SIGINFO_H */

View File

@ -1,5 +1,5 @@
#ifndef _TARGET_OS_SIGNAL_H_
#define _TARGET_OS_SIGNAL_H_
#ifndef TARGET_OS_SIGNAL_H
#define TARGET_OS_SIGNAL_H
#include "target_os_siginfo.h"
#include "target_arch_signal.h"
@ -78,4 +78,4 @@ abi_long setup_sigframe_arch(CPUArchState *env, abi_ulong frame_addr,
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack*/
#endif /* !_TARGET_OS_SIGNAL_H_ */
#endif /* TARGET_OS_SIGNAL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_STACK_H_
#define _TARGET_OS_STACK_H_
#ifndef TARGET_OS_STACK_H
#define TARGET_OS_STACK_H
#include <sys/param.h>
#include "target_arch_sigtramp.h"
@ -178,4 +178,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm,
return 0;
}
#endif /* !_TARGET_OS_STACK_H_ */
#endif /* TARGET_OS_STACK_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_THREAD_H_
#define _TARGET_OS_THREAD_H_
#ifndef TARGET_OS_THREAD_H
#define TARGET_OS_THREAD_H
#include "target_arch_thread.h"
#endif /* !_TARGET_OS_THREAD_H_ */
#endif /* TARGET_OS_THREAD_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_USER_H_
#define _TARGET_OS_USER_H_
#ifndef TARGET_OS_USER_H
#define TARGET_OS_USER_H
/*
* from sys/priority.h
@ -326,4 +326,4 @@ struct target_kinfo_vmentry {
char kve_path[PATH_MAX]; /* Path to VM obj, if any. */
};
#endif /* ! _TARGET_OS_USER_H_ */
#endif /* TARGET_OS_USER_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_VMPARAM_H_
#define _TARGET_OS_VMPARAM_H_
#ifndef TARGET_OS_VMPARAM_H
#define TARGET_OS_VMPARAM_H
#include "target_arch_vmparam.h"
@ -35,4 +36,4 @@ extern abi_ulong target_stksiz;
#define TARGET_PS_STRINGS ((target_stkbas + target_stksiz) - \
sizeof(struct target_ps_strings))
#endif /* !TARGET_OS_VMPARAM_H_ */
#endif /* TARGET_OS_VMPARAM_H */

View File

@ -6,8 +6,8 @@
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef TARGET_ARCH_H
#define TARGET_ARCH_H
#ifndef TARGET_H
#define TARGET_H
/*
* i386 doesn't 'lump' the registers for 64-bit args.
@ -17,5 +17,4 @@ static inline bool regpairs_aligned(void *cpu_env)
return false;
}
#endif /* ! TARGET_ARCH_H */
#endif /* TARGET_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_H_
#define _TARGET_ARCH_H_
#ifndef TARGET_ARCH_H
#define TARGET_ARCH_H
/* target_arch_cpu.c */
void bsd_i386_write_dt(void *ptr, unsigned long addr, unsigned long limit,
@ -28,4 +28,4 @@ void bsd_i386_set_idt_base(uint64_t base);
#define target_cpu_set_tls(env, newtls)
#endif /* ! _TARGET_ARCH_H_ */
#endif /* TARGET_ARCH_H */

View File

@ -16,8 +16,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_CPU_H_
#define _TARGET_ARCH_CPU_H_
#ifndef TARGET_ARCH_CPU_H
#define TARGET_ARCH_CPU_H
#include "target_arch.h"
#include "signal-common.h"
@ -195,4 +195,4 @@ static inline void target_cpu_reset(CPUArchState *env)
cpu_reset(env_cpu(env));
}
#endif /* ! _TARGET_ARCH_CPU_H_ */
#endif /* TARGET_ARCH_CPU_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_ELF_H_
#define _TARGET_ARCH_ELF_H_
#ifndef TARGET_ARCH_ELF_H
#define TARGET_ARCH_ELF_H
#define ELF_START_MMAP 0x80000000
#define ELF_ET_DYN_LOAD_ADDR 0x01001000
@ -32,4 +33,4 @@
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
#endif /* _TARGET_ARCH_ELF_H_ */
#endif /* TARGET_ARCH_ELF_H */

View File

@ -18,8 +18,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_REG_H_
#define _TARGET_ARCH_REG_H_
#ifndef TARGET_ARCH_REG_H
#define TARGET_ARCH_REG_H
/* See sys/i386/include/reg.h */
typedef struct target_reg {
@ -79,4 +79,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUX86State *env)
regs->r_gs = env->segs[R_GS].selector & 0xffff;
}
#endif /* !_TARGET_ARCH_REG_H_ */
#endif /* TARGET_ARCH_REG_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SIGTRAMP_H_
#define _TARGET_ARCH_SIGTRAMP_H_
#ifndef TARGET_ARCH_SIGTRAMP_H
#define TARGET_ARCH_SIGTRAMP_H
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
unsigned sys_sigreturn)
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
return 0;
}
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
#endif /* TARGET_ARCH_SIGTRAMP_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BSD_USER_ARCH_SYSARCH_H_
#define BSD_USER_ARCH_SYSARCH_H_
#ifndef TARGET_ARCH_SYSARCH_H
#define TARGET_ARCH_SYSARCH_H
#include "target_syscall.h"
@ -74,4 +74,4 @@ static inline void do_freebsd_arch_print_sysarch(
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
}
#endif /* !BSD_USER_ARCH_SYSARCH_H_ */
#endif /* TARGET_ARCH_SYSARCH_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_THREAD_H_
#define _TARGET_ARCH_THREAD_H_
#ifndef TARGET_ARCH_THREAD_H
#define TARGET_ARCH_THREAD_H
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
@ -44,4 +45,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
regs->edx = 0;
}
#endif /* !_TARGET_ARCH_THREAD_H_ */
#endif /* TARGET_ARCH_THREAD_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_VMPARAM_H_
#define _TARGET_ARCH_VMPARAM_H_
#ifndef TARGET_ARCH_VMPARAM_H
#define TARGET_ARCH_VMPARAM_H
#include "cpu.h"
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
state->regs[R_EDX] = retval2;
}
#endif /* !_TARGET_ARCH_VMPARAM_H_ */
#endif /* TARGET_ARCH_VMPARAM_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _HOST_OS_H_
#define _HOST_OS_H_
#ifndef HOST_OS_H
#define HOST_OS_H
#define HOST_DEFAULT_BSD_TYPE target_netbsd
#endif /*!_HOST_OS_H_ */
#endif /* HOST_OS_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_ELF_H_
#define _TARGET_OS_ELF_H_
#ifndef TARGET_OS_ELF_H
#define TARGET_OS_ELF_H
#include "target_arch_elf.h"
#include "elf.h"
@ -143,4 +144,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
return sp;
}
#endif /* _TARGET_OS_ELF_H_ */
#endif /* TARGET_OS_ELF_H */

View File

@ -1,5 +1,5 @@
#ifndef _TARGET_OS_SIGINFO_H_
#define _TARGET_OS_SIGINFO_H_
#ifndef TARGET_OS_SIGINFO_H
#define TARGET_OS_SIGINFO_H
#define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
@ -79,4 +79,4 @@ typedef union target_siginfo {
#define TARGET_TRAP_TRACE 2
#endif /* ! _TARGET_OS_SIGINFO_H_ */
#endif /* TARGET_OS_SIGINFO_H */

View File

@ -1,5 +1,5 @@
#ifndef _TARGET_OS_SIGNAL_H_
#define _TARGET_OS_SIGNAL_H_
#ifndef TARGET_OS_SIGNAL_H
#define TARGET_OS_SIGNAL_H
#include "target_os_siginfo.h"
#include "target_arch_signal.h"
@ -66,4 +66,4 @@
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack */
#endif /* !_TARGET_OS_SIGNAL_H_ */
#endif /* TARGET_OS_SIGNAL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_STACK_H_
#define _TARGET_OS_STACK_H_
#ifndef TARGET_OS_STACK_H
#define TARGET_OS_STACK_H
#include "target_arch_sigtramp.h"
@ -53,4 +53,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm, abi_ulong *p,
return 0;
}
#endif /* !_TARGET_OS_STACK_H_ */
#endif /* TARGET_OS_STACK_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_THREAD_H_
#define _TARGET_OS_THREAD_H_
#ifndef TARGET_OS_THREAD_H
#define TARGET_OS_THREAD_H
#include "target_arch_thread.h"
#endif /* !_TARGET_OS_THREAD_H_ */
#endif /* TARGET_OS_THREAD_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _HOST_OS_H_
#define _HOST_OS_H_
#ifndef HOST_OS_H
#define HOST_OS_H
#define HOST_DEFAULT_BSD_TYPE target_openbsd
#endif /*!_HOST_OS_H_ */
#endif /* HOST_OS_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_ELF_H_
#define _TARGET_OS_ELF_H_
#ifndef TARGET_OS_ELF_H
#define TARGET_OS_ELF_H
#include "target_arch_elf.h"
#include "elf.h"
@ -143,4 +144,4 @@ static abi_ulong target_create_elf_tables(abi_ulong p, int argc, int envc,
return sp;
}
#endif /* _TARGET_OS_ELF_H_ */
#endif /* TARGET_OS_ELF_H */

View File

@ -1,5 +1,5 @@
#ifndef _TARGET_OS_SIGINFO_H_
#define _TARGET_OS_SIGINFO_H_
#ifndef TARGET_OS_SIGINFO_H
#define TARGET_OS_SIGINFO_H
#define TARGET_NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
#define TARGET_NSIG_BPW (sizeof(uint32_t) * 8)
@ -79,4 +79,4 @@ typedef union target_siginfo {
#define TARGET_TRAP_TRACE 2
#endif /* ! _TARGET_OS_SIGINFO_H_ */
#endif /* TARGET_OS_SIGINFO_H */

View File

@ -1,5 +1,5 @@
#ifndef _TARGET_OS_SIGNAL_H_
#define _TARGET_OS_SIGNAL_H_
#ifndef TARGET_OS_SIGNAL_H
#define TARGET_OS_SIGNAL_H
#include "target_os_siginfo.h"
#include "target_arch_signal.h"
@ -66,4 +66,4 @@
#define TARGET_SS_ONSTACK 0x0001 /* take signals on alternate stack */
#define TARGET_SS_DISABLE 0x0004 /* disable taking signals on alternate stack */
#endif /* !_TARGET_OS_SIGNAL_H_ */
#endif /* TARGET_OS_SIGNAL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_STACK_H_
#define _TARGET_OS_STACK_H_
#ifndef TARGET_OS_STACK_H
#define TARGET_OS_STACK_H
#include "target_arch_sigtramp.h"
@ -53,4 +53,4 @@ static inline int setup_initial_stack(struct bsd_binprm *bprm, abi_ulong *p,
return 0;
}
#endif /* !_TARGET_OS_STACK_H_ */
#endif /* TARGET_OS_STACK_H */

View File

@ -17,9 +17,9 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_OS_THREAD_H_
#define _TARGET_OS_THREAD_H_
#ifndef TARGET_OS_THREAD_H
#define TARGET_OS_THREAD_H
#include "target_arch_thread.h"
#endif /* !_TARGET_OS_THREAD_H_ */
#endif /* TARGET_OS_THREAD_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _SYSCALL_DEFS_H_
#define _SYSCALL_DEFS_H_
#ifndef SYSCALL_DEFS_H
#define SYSCALL_DEFS_H
#include <sys/syscall.h>
#include <sys/resource.h>
@ -226,4 +226,4 @@ type safe_##name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \
return safe_syscall(SYS_##name, arg1, arg2, arg3, arg4, arg5, arg6); \
}
#endif /* ! _SYSCALL_DEFS_H_ */
#endif /* SYSCALL_DEFS_H */

View File

@ -17,5 +17,5 @@ static inline bool regpairs_aligned(void *cpu_env)
return false;
}
#endif /* ! TARGET_H */
#endif /* TARGET_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_H_
#define _TARGET_ARCH_H_
#ifndef TARGET_ARCH_H
#define TARGET_ARCH_H
/* target_arch_cpu.c */
void bsd_x86_64_write_dt(void *ptr, unsigned long addr, unsigned long limit,
@ -28,4 +28,4 @@ void bsd_x86_64_set_idt_base(uint64_t base);
#define target_cpu_set_tls(env, newtls)
#endif /* !_TARGET_ARCH_H_ */
#endif /* TARGET_ARCH_H */

View File

@ -16,8 +16,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_CPU_H_
#define _TARGET_ARCH_CPU_H_
#ifndef TARGET_ARCH_CPU_H
#define TARGET_ARCH_CPU_H
#include "target_arch.h"
#include "signal-common.h"
@ -174,4 +174,4 @@ static inline void target_cpu_reset(CPUArchState *env)
cpu_reset(env_cpu(env));
}
#endif /* ! _TARGET_ARCH_CPU_H_ */
#endif /* TARGET_ARCH_CPU_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_ELF_H_
#define _TARGET_ARCH_ELF_H_
#ifndef TARGET_ARCH_ELF_H
#define TARGET_ARCH_ELF_H
#define ELF_START_MMAP 0x2aaaaab000ULL
#define ELF_ET_DYN_LOAD_ADDR 0x01021000
@ -32,4 +33,4 @@
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
#endif /* _TARGET_ARCH_ELF_H_ */
#endif /* TARGET_ARCH_ELF_H */

View File

@ -18,8 +18,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_REG_H_
#define _TARGET_ARCH_REG_H_
#ifndef TARGET_ARCH_REG_H
#define TARGET_ARCH_REG_H
/* See sys/amd64/include/reg.h */
typedef struct target_reg {
@ -89,4 +89,4 @@ static inline void target_copy_regs(target_reg_t *regs, const CPUX86State *env)
regs->r_ss = env->segs[R_SS].selector & 0xffff;
}
#endif /* !_TARGET_ARCH_REG_H_ */
#endif /* TARGET_ARCH_REG_H */

View File

@ -15,8 +15,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SIGNAL_H_
#define _TARGET_ARCH_SIGNAL_H_
#ifndef TARGET_ARCH_SIGNAL_H
#define TARGET_ARCH_SIGNAL_H
#include "cpu.h"
@ -96,4 +97,4 @@ struct target_sigframe {
uint32_t __spare__[2];
};
#endif /* !TARGET_ARCH_SIGNAL_H_ */
#endif /* TARGET_ARCH_SIGNAL_H */

View File

@ -17,8 +17,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_SIGTRAMP_H_
#define _TARGET_ARCH_SIGTRAMP_H_
#ifndef TARGET_ARCH_SIGTRAMP_H
#define TARGET_ARCH_SIGTRAMP_H
static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
unsigned sys_sigreturn)
@ -26,4 +26,4 @@ static inline abi_long setup_sigtramp(abi_ulong offset, unsigned sigf_uc,
return 0;
}
#endif /* _TARGET_ARCH_SIGTRAMP_H_ */
#endif /* TARGET_ARCH_SIGTRAMP_H */

View File

@ -16,8 +16,8 @@
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef BSD_USER_ARCH_SYSARCH_H_
#define BSD_USER_ARCH_SYSARCH_H_
#ifndef TARGET_ARCH_SYSARCH_H
#define TARGET_ARCH_SYSARCH_H
#include "target_syscall.h"
@ -73,4 +73,4 @@ static inline void do_freebsd_arch_print_sysarch(
TARGET_ABI_FMT_lx ")", name->name, (int)arg1, arg2, arg3, arg4);
}
#endif /*! BSD_USER_ARCH_SYSARCH_H_ */
#endif /* TARGET_ARCH_SYSARCH_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_THREAD_H_
#define _TARGET_ARCH_THREAD_H_
#ifndef TARGET_ARCH_THREAD_H
#define TARGET_ARCH_THREAD_H
/* Compare to vm_machdep.c cpu_set_upcall_kse() */
static inline void target_thread_set_upcall(CPUX86State *regs, abi_ulong entry,
@ -35,4 +36,4 @@ static inline void target_thread_init(struct target_pt_regs *regs,
regs->rdi = infop->start_stack;
}
#endif /* !_TARGET_ARCH_THREAD_H_ */
#endif /* TARGET_ARCH_THREAD_H */

View File

@ -16,8 +16,9 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _TARGET_ARCH_VMPARAM_H_
#define _TARGET_ARCH_VMPARAM_H_
#ifndef TARGET_ARCH_VMPARAM_H
#define TARGET_ARCH_VMPARAM_H
#include "cpu.h"
@ -43,4 +44,4 @@ static inline void set_second_rval(CPUX86State *state, abi_ulong retval2)
state->regs[R_EDX] = retval2;
}
#endif /* !_TARGET_ARCH_VMPARAM_H_ */
#endif /* TARGET_ARCH_VMPARAM_H */

@ -1 +0,0 @@
Subproject commit f8b1b833015a4ae47110ed068e0deb7106ced66d

View File

@ -122,7 +122,7 @@ int io_channel_send_full(QIOChannel *ioc,
ret = qio_channel_writev_full(
ioc, &iov, 1,
fds, nfds, NULL);
fds, nfds, 0, NULL);
if (ret == QIO_CHANNEL_ERR_BLOCK) {
if (offset) {
return offset;

View File

@ -21,6 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
#ifndef CHARDEV_INTERNAL_H
#define CHARDEV_INTERNAL_H
@ -64,4 +65,4 @@ void mux_chr_send_all_event(Chardev *chr, QEMUChrEvent event);
Object *get_chardevs_root(void);
#endif /* CHAR_MUX_H */
#endif /* CHARDEV_INTERNAL_H */

View File

@ -6,4 +6,4 @@
# Boards:
#
CONFIG_DINO=y
CONFIG_HPPA_B160L=y

View File

@ -0,0 +1,3 @@
# Default configuration for loongarch64-softmmu
CONFIG_LOONGARCH_VIRT=y

View File

@ -0,0 +1,4 @@
TARGET_ARCH=loongarch64
TARGET_BASE_ARCH=loongarch
TARGET_SUPPORTS_MTTCG=y
TARGET_XML_FILES= gdb-xml/loongarch-base64.xml gdb-xml/loongarch-fpu64.xml

1314
configure vendored

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More