mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'pull-testing-next-290722-1' of https://github.com/stsquad/qemu into staging
Testing, semihosting and doc fixes: - update to latest libvirt-ci - echo testlog.txt on failed cirrus runs - drop containers-layer2 stage - update handling of symlinks on windows builds - return 0 for failure of semihosting console write - don't copy unused buffer after semihost operation - check for errors in semihosting args - fix buffer handling for semihosting TMPNAM - add qapi exit-failure PanicAction - add lowcore unaligned access test to s390x - fix documentation of OBJECT_DECLARE_SIMPLE_TYPE - expand documentation on booting code # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmLjoIQACgkQ+9DbCVqe # KkSLyAf7Byt1jeIHCYYYqOPj8+Zx+kJXgWr59wMRSDFLwd0wWeFkgQhxriSlSUAl # oVOTP8fkczeaMKPhp7CJnqpcQuZzD6iaK9hg/hNzKy0gTQbJgFRtTSP7c0E0iak5 # ZfDX5h+BRSAoeDo3I+ulj/bLKlj+KbxRWGf+y4K9rRGHKcTJUbcpkZ7aQlK5J6UD # nqjkrvgnNWslxhdRSI6+2KPzkYaOmbiyPIVGOiBvmyv0N+NuazPvFMp2mFGH25kB # XGsU5zxmm8IskxLGHHFvlwIM19SwB/2vArLtyaTVEPbLDhvdENePrPSL1Lr2BA/A # yStVAvAnyy7Cdr8YmRCAGm3qnY61dg== # =57ZK # -----END PGP SIGNATURE----- # gpg: Signature made Fri 29 Jul 2022 01:55:32 AM PDT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * tag 'pull-testing-next-290722-1' of https://github.com/stsquad/qemu: qemu-options: bring the kernel and image options together docs/devel: fix description of OBJECT_DECLARE_SIMPLE_TYPE tests/tcg/s390x: Test unaligned accesses to lowcore qapi: Add exit-failure PanicAction semihosting: Fix handling of buffer in TARGET_SYS_TMPNAM semihosting: Check for errors on SET_ARG() semihosting: Don't copy buffer after console_write() semihosting: Don't return negative values on qemu_semihosting_console_write() failure .gitlab-ci.d/windows.yml: Enable native Windows symlink .cirrus.yml: Change winsymlinks to 'native' gitlab: drop 'containers-layer2' stage gitlab: show testlog.txt contents when cirrus/custom-runner jobs fail tests: refresh to latest libvirt-ci module Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@ windows_msys2_task:
|
||||
memory: 8G
|
||||
env:
|
||||
CIRRUS_SHELL: powershell
|
||||
MSYS: winsymlinks:nativestrict
|
||||
MSYS: winsymlinks:native
|
||||
MSYSTEM: MINGW64
|
||||
MSYS2_URL: https://github.com/msys2/msys2-installer/releases/download/2022-05-03/msys2-base-x86_64-20220503.sfx.exe
|
||||
MSYS2_FINGERPRINT: 0
|
||||
|
||||
@@ -32,5 +32,6 @@ build_task:
|
||||
- $MAKE -j$(sysctl -n hw.ncpu)
|
||||
- for TARGET in $TEST_TARGETS ;
|
||||
do
|
||||
$MAKE -j$(sysctl -n hw.ncpu) $TARGET V=1 ;
|
||||
$MAKE -j$(sysctl -n hw.ncpu) $TARGET V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
done
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
# ... and then edited to fix py39, pending proper lcitool update.
|
||||
#
|
||||
# $ lcitool variables freebsd-12 qemu
|
||||
#
|
||||
@@ -12,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PACKAGING_COMMAND='pkg'
|
||||
PIP3='/usr/local/bin/pip-3.8'
|
||||
PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils dtc fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-virtualenv py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
|
||||
PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
|
||||
PYPI_PKGS=''
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# THIS FILE WAS AUTO-GENERATED
|
||||
# ... and then edited to fix py39, pending proper lcitool update.
|
||||
#
|
||||
# $ lcitool variables freebsd-13 qemu
|
||||
#
|
||||
@@ -12,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PACKAGING_COMMAND='pkg'
|
||||
PIP3='/usr/local/bin/pip-3.8'
|
||||
PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage ctags curl cyrus-sasl dbus diffutils dtc fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-virtualenv py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
|
||||
PKGS='alsa-lib bash bzip2 ca_root_nss capstone4 ccache cdrkit-genisoimage cmocka ctags curl cyrus-sasl dbus diffutils dtc fusefs-libs3 gettext git glib gmake gnutls gsed gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libspice-server libssh libtasn1 llvm lzo2 meson ncurses nettle ninja opencv perl5 pixman pkgconf png py39-numpy py39-pillow py39-pip py39-sphinx py39-sphinx_rtd_theme py39-yaml python3 rpm2cpio sdl2 sdl2_image snappy spice-protocol tesseract texinfo usbredir virglrenderer vte3 zstd'
|
||||
PYPI_PKGS=''
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
|
||||
@@ -11,6 +11,6 @@ MAKE='/usr/local/bin/gmake'
|
||||
NINJA='/usr/local/bin/ninja'
|
||||
PACKAGING_COMMAND='brew'
|
||||
PIP3='/usr/local/bin/pip3'
|
||||
PKGS='bash bc bzip2 capstone ccache ctags curl dbus diffutils dtc gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson ncurses nettle ninja perl pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy sparse spice-protocol tesseract texinfo usbredir vde vte3 zlib zstd'
|
||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme virtualenv'
|
||||
PKGS='bash bc bzip2 capstone ccache cmocka ctags curl dbus diffutils dtc gcovr gettext git glib gnu-sed gnutls gtk+3 jemalloc jpeg-turbo json-c libepoxy libffi libgcrypt libiscsi libnfs libpng libslirp libssh libtasn1 libusb llvm lzo make meson ncurses nettle ninja perl pixman pkg-config python3 rpm2cpio sdl2 sdl2_image snappy sparse spice-protocol tesseract texinfo usbredir vde vte3 zlib zstd'
|
||||
PYPI_PKGS='PyYAML numpy pillow sphinx sphinx-rtd-theme'
|
||||
PYTHON='/usr/local/bin/python3'
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
alpha-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-alpha-cross
|
||||
|
||||
amd64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-amd64-cross
|
||||
|
||||
amd64-debian-user-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-all-test-cross
|
||||
@@ -65,21 +65,21 @@ hexagon-cross-container:
|
||||
|
||||
hppa-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-hppa-cross
|
||||
|
||||
m68k-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-m68k-cross
|
||||
|
||||
mips64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-mips64-cross
|
||||
@@ -92,7 +92,7 @@ mips64el-debian-cross-container:
|
||||
|
||||
mips-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-mips-cross
|
||||
@@ -105,7 +105,7 @@ mipsel-debian-cross-container:
|
||||
|
||||
powerpc-test-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian11-container']
|
||||
variables:
|
||||
NAME: debian-powerpc-test-cross
|
||||
@@ -127,7 +127,7 @@ riscv64-debian-cross-container:
|
||||
# we can however build TCG tests using a non-sid base
|
||||
riscv64-debian-test-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian11-container']
|
||||
variables:
|
||||
NAME: debian-riscv64-test-cross
|
||||
@@ -140,21 +140,21 @@ s390x-debian-cross-container:
|
||||
|
||||
sh4-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-sh4-cross
|
||||
|
||||
sparc64-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-sparc64-cross
|
||||
|
||||
tricore-debian-cross-container:
|
||||
extends: .container_job_template
|
||||
stage: containers-layer2
|
||||
stage: containers
|
||||
needs: ['amd64-debian10-container']
|
||||
variables:
|
||||
NAME: debian-tricore-cross
|
||||
|
||||
@@ -23,6 +23,8 @@ centos-stream-8-x86_64:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../scripts/ci/org.centos/stream/8/x86_64/configure
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make -j"$JOBS"
|
||||
- make NINJA=":" check
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
- ../scripts/ci/org.centos/stream/8/x86_64/test-avocado
|
||||
|
||||
@@ -19,5 +19,7 @@ ubuntu-20.04-aarch32-all:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --cross-prefix=arm-linux-gnueabihf-
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
@@ -17,9 +17,12 @@ ubuntu-20.04-aarch64-all-linux-static:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
- make --output-sync -j`nproc --ignore=40` check-tcg V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-aarch64-all:
|
||||
needs: []
|
||||
@@ -38,8 +41,10 @@ ubuntu-20.04-aarch64-all:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-aarch64-alldbg:
|
||||
needs: []
|
||||
@@ -54,9 +59,11 @@ ubuntu-20.04-aarch64-alldbg:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --enable-debug --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make clean
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-aarch64-clang:
|
||||
needs: []
|
||||
@@ -75,8 +82,10 @@ ubuntu-20.04-aarch64-clang:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-aarch64-tci:
|
||||
needs: []
|
||||
@@ -95,6 +104,7 @@ ubuntu-20.04-aarch64-tci:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --enable-tcg-interpreter
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
|
||||
ubuntu-20.04-aarch64-notcg:
|
||||
@@ -114,5 +124,7 @@ ubuntu-20.04-aarch64-notcg:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --disable-tcg
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc --ignore=40`
|
||||
- make --output-sync -j`nproc --ignore=40` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
@@ -17,9 +17,12 @@ ubuntu-20.04-s390x-all-linux-static:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
- make --output-sync -j`nproc` check-tcg V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-s390x-all:
|
||||
needs: []
|
||||
@@ -35,8 +38,10 @@ ubuntu-20.04-s390x-all:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-s390x-alldbg:
|
||||
needs: []
|
||||
@@ -55,9 +60,11 @@ ubuntu-20.04-s390x-alldbg:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --enable-debug --disable-libssh
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make clean
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-s390x-clang:
|
||||
needs: []
|
||||
@@ -76,8 +83,10 @@ ubuntu-20.04-s390x-clang:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
ubuntu-20.04-s390x-tci:
|
||||
needs: []
|
||||
@@ -96,6 +105,7 @@ ubuntu-20.04-s390x-tci:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --enable-tcg-interpreter
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc`
|
||||
|
||||
ubuntu-20.04-s390x-notcg:
|
||||
@@ -115,5 +125,7 @@ ubuntu-20.04-s390x-notcg:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ../configure --disable-libssh --disable-tcg
|
||||
|| { cat config.log meson-logs/meson-log.txt; exit 1; }
|
||||
- make --output-sync -j`nproc`
|
||||
- make --output-sync -j`nproc` check V=1
|
||||
|| { cat meson-logs/testlog.txt; exit 1; } ;
|
||||
|
||||
@@ -3,6 +3,5 @@
|
||||
# - test (for test stages, using build artefacts from a build stage)
|
||||
stages:
|
||||
- containers
|
||||
- containers-layer2
|
||||
- build
|
||||
- test
|
||||
|
||||
@@ -57,6 +57,7 @@ msys2-64bit:
|
||||
mingw-w64-x86_64-zstd "
|
||||
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
||||
- $env:MSYSTEM = 'MINGW64' # Start a 64 bit Mingw environment
|
||||
- $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
|
||||
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
|
||||
--enable-capstone --without-default-devices'
|
||||
- .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
|
||||
@@ -89,6 +90,7 @@ msys2-32bit:
|
||||
mingw-w64-i686-usbredir "
|
||||
- $env:CHERE_INVOKING = 'yes' # Preserve the current working directory
|
||||
- $env:MSYSTEM = 'MINGW32' # Start a 32-bit MinG environment
|
||||
- $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
|
||||
- mkdir output
|
||||
- cd output
|
||||
- ..\msys64\usr\bin\bash -lc "../configure --target-list=ppc64-softmmu"
|
||||
|
||||
+1
-2
@@ -292,8 +292,7 @@ in the header file:
|
||||
.. code-block:: c
|
||||
:caption: Declaring a simple type
|
||||
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(MyDevice, my_device,
|
||||
MY_DEVICE, DEVICE)
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(MyDevice, MY_DEVICE)
|
||||
|
||||
This is equivalent to the following:
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ void qemu_boot_set(const char *boot_order, Error **errp);
|
||||
bool defaults_enabled(void);
|
||||
|
||||
void qemu_init(int argc, char **argv, char **envp);
|
||||
void qemu_main_loop(void);
|
||||
int qemu_main_loop(void);
|
||||
void qemu_cleanup(void);
|
||||
|
||||
extern QemuOptsList qemu_legacy_drive_opts;
|
||||
|
||||
+4
-1
@@ -364,10 +364,13 @@
|
||||
#
|
||||
# @shutdown: Shutdown the VM and exit, according to the shutdown action
|
||||
#
|
||||
# @exit-failure: Shutdown the VM and exit with nonzero status
|
||||
# (since 7.1)
|
||||
#
|
||||
# Since: 6.0
|
||||
##
|
||||
{ 'enum': 'PanicAction',
|
||||
'data': [ 'pause', 'shutdown', 'none' ] }
|
||||
'data': [ 'pause', 'shutdown', 'exit-failure', 'none' ] }
|
||||
|
||||
##
|
||||
# @watchdog-set-action:
|
||||
|
||||
+79
-19
@@ -1585,13 +1585,6 @@ SRST
|
||||
Use file as SecureDigital card image.
|
||||
ERST
|
||||
|
||||
DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
|
||||
"-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-pflash file``
|
||||
Use file as a parallel flash image.
|
||||
ERST
|
||||
|
||||
DEF("snapshot", 0, QEMU_OPTION_snapshot,
|
||||
"-snapshot write to temporary files instead of disk image files\n",
|
||||
QEMU_ARCH_ALL)
|
||||
@@ -3684,12 +3677,67 @@ DEFHEADING()
|
||||
|
||||
#endif
|
||||
|
||||
DEFHEADING(Linux/Multiboot boot specific:)
|
||||
DEFHEADING(Boot Image or Kernel specific:)
|
||||
SRST
|
||||
When using these options, you can use a given Linux or Multiboot kernel
|
||||
without installing it in the disk image. It can be useful for easier
|
||||
testing of various kernels.
|
||||
There are broadly 4 ways you can boot a system with QEMU.
|
||||
|
||||
- specify a firmware and let it control finding a kernel
|
||||
- specify a firmware and pass a hint to the kernel to boot
|
||||
- direct kernel image boot
|
||||
- manually load files into the guest's address space
|
||||
|
||||
The third method is useful for quickly testing kernels but as there is
|
||||
no firmware to pass configuration information to the kernel the
|
||||
hardware must either be probeable, the kernel built for the exact
|
||||
configuration or passed some configuration data (e.g. a DTB blob)
|
||||
which tells the kernel what drivers it needs. This exact details are
|
||||
often hardware specific.
|
||||
|
||||
The final method is the most generic way of loading images into the
|
||||
guest address space and used mostly for ``bare metal`` type
|
||||
development where the reset vectors of the processor are taken into
|
||||
account.
|
||||
|
||||
ERST
|
||||
|
||||
SRST
|
||||
|
||||
For x86 machines and some other architectures ``-bios`` will generally
|
||||
do the right thing with whatever it is given. For other machines the
|
||||
more strict ``-pflash`` option needs an image that is sized for the
|
||||
flash device for the given machine type.
|
||||
|
||||
Please see the :ref:`system-targets-ref` section of the manual for
|
||||
more detailed documentation.
|
||||
|
||||
ERST
|
||||
|
||||
DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
|
||||
"-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-bios file``
|
||||
Set the filename for the BIOS.
|
||||
ERST
|
||||
|
||||
DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
|
||||
"-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-pflash file``
|
||||
Use file as a parallel flash image.
|
||||
ERST
|
||||
|
||||
SRST
|
||||
|
||||
The kernel options were designed to work with Linux kernels although
|
||||
other things (like hypervisors) can be packaged up as a kernel
|
||||
executable image. The exact format of a executable image is usually
|
||||
architecture specific.
|
||||
|
||||
The way in which the kernel is started (what address it is loaded at,
|
||||
what if any information is passed to it via CPU registers, the state
|
||||
of the hardware when it is started, and so on) is also architecture
|
||||
specific. Typically it follows the specification laid down by the
|
||||
Linux kernel for how kernels for that architecture must be started.
|
||||
|
||||
ERST
|
||||
|
||||
@@ -3729,6 +3777,25 @@ SRST
|
||||
kernel on boot.
|
||||
ERST
|
||||
|
||||
SRST
|
||||
|
||||
Finally you can also manually load images directly into the address
|
||||
space of the guest. This is most useful for developers who already
|
||||
know the layout of their guest and take care to ensure something sane
|
||||
will happen when the reset vector executes.
|
||||
|
||||
The generic loader can be invoked by using the loader device:
|
||||
|
||||
``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
|
||||
|
||||
there is also the guest loader which operates in a similar way but
|
||||
tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
|
||||
the guest image is:
|
||||
|
||||
``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
|
||||
|
||||
ERST
|
||||
|
||||
DEFHEADING()
|
||||
|
||||
DEFHEADING(Debug/Expert options:)
|
||||
@@ -4179,13 +4246,6 @@ SRST
|
||||
To list all the data directories, use ``-L help``.
|
||||
ERST
|
||||
|
||||
DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
|
||||
"-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-bios file``
|
||||
Set the filename for the BIOS.
|
||||
ERST
|
||||
|
||||
DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
|
||||
"-enable-kvm enable KVM full virtualization support\n",
|
||||
QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
|
||||
@@ -4239,7 +4299,7 @@ DEF("action", HAS_ARG, QEMU_OPTION_action,
|
||||
" action when guest reboots [default=reset]\n"
|
||||
"-action shutdown=poweroff|pause\n"
|
||||
" action when guest shuts down [default=poweroff]\n"
|
||||
"-action panic=pause|shutdown|none\n"
|
||||
"-action panic=pause|shutdown|exit-failure|none\n"
|
||||
" action when guest panics [default=shutdown]\n"
|
||||
"-action watchdog=reset|shutdown|poweroff|inject-nmi|pause|debug|none\n"
|
||||
" action when watchdog fires [default=reset]\n",
|
||||
|
||||
@@ -171,6 +171,12 @@ static LayoutInfo common_semi_find_bases(CPUState *cs)
|
||||
* Read the input value from the argument block; fail the semihosting
|
||||
* call if the memory read fails. Eventually we could use a generic
|
||||
* CPUState helper function here.
|
||||
* Note that GET_ARG() handles memory access errors by jumping to
|
||||
* do_fault, so must be used as the first thing done in handling a
|
||||
* semihosting call, to avoid accidentally leaking allocated resources.
|
||||
* SET_ARG(), since it unavoidably happens late, instead returns an
|
||||
* error indication (0 on success, non-0 for error) which the caller
|
||||
* should check.
|
||||
*/
|
||||
|
||||
#define GET_ARG(n) do { \
|
||||
@@ -498,16 +504,25 @@ void do_common_semihosting(CPUState *cs)
|
||||
GET_ARG(1);
|
||||
GET_ARG(2);
|
||||
len = asprintf(&s, "/tmp/qemu-%x%02x", getpid(), (int)arg1 & 0xff);
|
||||
if (len < 0) {
|
||||
common_semi_set_ret(cs, -1);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Allow for trailing NUL */
|
||||
len++;
|
||||
/* Make sure there's enough space in the buffer */
|
||||
if (len < 0 || len >= arg2) {
|
||||
if (len > arg2) {
|
||||
free(s);
|
||||
common_semi_set_ret(cs, -1);
|
||||
break;
|
||||
}
|
||||
p = lock_user(VERIFY_WRITE, arg0, len, 0);
|
||||
if (!p) {
|
||||
free(s);
|
||||
goto do_fault;
|
||||
}
|
||||
memcpy(p, s, len + 1);
|
||||
memcpy(p, s, len);
|
||||
unlock_user(p, arg0, len);
|
||||
free(s);
|
||||
common_semi_set_ret(cs, 0);
|
||||
@@ -739,10 +754,14 @@ void do_common_semihosting(CPUState *cs)
|
||||
case TARGET_SYS_ELAPSED:
|
||||
elapsed = get_clock() - clock_start;
|
||||
if (sizeof(target_ulong) == 8) {
|
||||
SET_ARG(0, elapsed);
|
||||
if (SET_ARG(0, elapsed)) {
|
||||
goto do_fault;
|
||||
}
|
||||
} else {
|
||||
SET_ARG(0, (uint32_t) elapsed);
|
||||
SET_ARG(1, (uint32_t) (elapsed >> 32));
|
||||
if (SET_ARG(0, (uint32_t) elapsed) ||
|
||||
SET_ARG(1, (uint32_t) (elapsed >> 32))) {
|
||||
goto do_fault;
|
||||
}
|
||||
}
|
||||
common_semi_set_ret(cs, 0);
|
||||
break;
|
||||
|
||||
@@ -111,7 +111,8 @@ int qemu_semihosting_console_read(CPUState *cs, void *buf, int len)
|
||||
int qemu_semihosting_console_write(void *buf, int len)
|
||||
{
|
||||
if (console.chr) {
|
||||
return qemu_chr_write_all(console.chr, (uint8_t *)buf, len);
|
||||
int r = qemu_chr_write_all(console.chr, (uint8_t *)buf, len);
|
||||
return r < 0 ? 0 : r;
|
||||
} else {
|
||||
return fwrite(buf, 1, len, stderr);
|
||||
}
|
||||
|
||||
@@ -627,7 +627,7 @@ static void console_write(CPUState *cs, gdb_syscall_complete_cb complete,
|
||||
}
|
||||
ret = qemu_semihosting_console_write(ptr, len);
|
||||
complete(cs, ret ? ret : -1, ret ? 0 : EIO);
|
||||
unlock_user(ptr, buf, ret);
|
||||
unlock_user(ptr, buf, 0);
|
||||
}
|
||||
|
||||
static void console_fstat(CPUState *cs, gdb_syscall_complete_cb complete,
|
||||
|
||||
+4
-2
@@ -32,11 +32,13 @@
|
||||
|
||||
int qemu_main(int argc, char **argv, char **envp)
|
||||
{
|
||||
int status;
|
||||
|
||||
qemu_init(argc, argv, envp);
|
||||
qemu_main_loop();
|
||||
status = qemu_main_loop();
|
||||
qemu_cleanup();
|
||||
|
||||
return 0;
|
||||
return status;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_COCOA
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user