mirror of https://github.com/xemu-project/xemu.git
* Cirrus-CI improvements and fixes (compile with -Werror & fix for 1h problem)
* Two build system fixes to fix some failures the CI * One m68k QOMification patch * Some trivial qtest patches * Some small improvements for the Gitlab CI -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAl9QzcARHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbWfIQ//TqpTDJzS0qs3m/cvl8nJNbe/DqwSx2U5 gUgpLiLU0UVO8xOw0WwrdIIdRlEdV9QclG+kjq3VTNfPBpZ7llTsPlWuXduDvrrQ LhVaYCtOkl3eA1dvujQOAud04DQlo73NS5H1FeJzpK5UAQNhW/HSHZRgkNfZxCSj WRFQbXu2Sp+WKstvgoaBvIfr2yqdoToicuRL12IGkIYNdDzHVR82gouDrsxdO7Ig VDr0fUL2t4cylUAmNrmctV3Fe0WcbI8HXH1S825TvaoYofo6LmrkKBXj5IIoTK9s zCKIh+prMnWhXupCE4uCvDLESqptq6YvY5mt4a6c3om1U0qUvFxsaJeR0lS6sXHc xoIYdBTw1ETWfOgfT8ZpJRiogBoi7AkQrjWXUsUUR9KFYSRaOIIUujCnTyJuIVm1 spKxlwikVoIa9onJD+or4LC1HI79lS8i537lHjPWHgsZuzzjkT/cCIUvTcax/Rjz itpqi8sJrOlS4rP9u84qL/xz7wOixehriLUnBVb/Q6i7LaLMyDaLg+5+r8sPb6jx VzKLpDQ6YtigzRZ/PKOe1BQun4jGBT4oyautu+5Z7GSnkXqrR1NNnacOWGhJztzt S+IhC08boN4C8KqjynF1xazZXtkfYgya4p2SU6AQG0dxhvf9cEr1AWj0tBSXpRc/ 3jx4Ev24kZk= =kPTJ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2020-09-03' into staging * Cirrus-CI improvements and fixes (compile with -Werror & fix for 1h problem) * Two build system fixes to fix some failures the CI * One m68k QOMification patch * Some trivial qtest patches * Some small improvements for the Gitlab CI # gpg: Signature made Thu 03 Sep 2020 12:04:32 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/huth-gitlab/tags/pull-request-2020-09-03: gitlab-ci.yml: Set artifacts expiration time gitlab-ci.yml: Run check-qtest and check-unit at the end of the fuzzer job gitlab/travis: Rework the disabled features tests libqtest: Rename qmp_assert_error_class() to qmp_expect_error_and_unref() tests/qtest/ipmi-kcs: Fix assert side-effect tests/qtest/tpm: Declare input buffers const and static tests/qtest/ahci: Improve error handling (NEGATIVE_RETURNS) hw/m68k: QOMify the mcf5206 system integration module configure: Add system = 'linux' for meson when cross-compiling meson: fix keymaps without qemu-keymap cirrus.yml: Split FreeBSD job into two parts cirrus.yml: Update the macOS jobs to Catalina cirrus.yml: Compile macOS with -Werror cirrus.yml: Compile FreeBSD with -Werror configure: Fix atomic64 test for --enable-werror on macOS Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
67a7bfe560
43
.cirrus.yml
43
.cirrus.yml
|
@ -1,42 +1,65 @@
|
||||||
env:
|
env:
|
||||||
CIRRUS_CLONE_DEPTH: 1
|
CIRRUS_CLONE_DEPTH: 1
|
||||||
|
|
||||||
freebsd_12_task:
|
freebsd_1st_task:
|
||||||
freebsd_instance:
|
freebsd_instance:
|
||||||
image_family: freebsd-12-1
|
image_family: freebsd-12-1
|
||||||
cpu: 8
|
cpu: 4
|
||||||
memory: 8G
|
memory: 4G
|
||||||
install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y
|
install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y
|
||||||
bash curl cyrus-sasl git glib gmake gnutls gsed
|
bash curl cyrus-sasl git glib gmake gnutls gsed
|
||||||
nettle perl5 pixman pkgconf png usbredir
|
nettle perl5 pixman pkgconf png usbredir
|
||||||
script:
|
script:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure || { cat config.log; exit 1; }
|
- ../configure --disable-user --target-list-exclude='alpha-softmmu
|
||||||
- gmake -j8
|
ppc64-softmmu ppc-softmmu riscv32-softmmu riscv64-softmmu s390x-softmmu
|
||||||
- gmake V=1 check
|
sparc64-softmmu sparc-softmmu x86_64-softmmu i386-softmmu'
|
||||||
|
--enable-werror || { cat config.log; exit 1; }
|
||||||
|
- gmake -j$(sysctl -n hw.ncpu)
|
||||||
|
- gmake -j$(sysctl -n hw.ncpu) check
|
||||||
|
|
||||||
|
freebsd_2nd_task:
|
||||||
|
freebsd_instance:
|
||||||
|
image_family: freebsd-12-1
|
||||||
|
cpu: 4
|
||||||
|
memory: 4G
|
||||||
|
install_script: ASSUME_ALWAYS_YES=yes pkg bootstrap -f ; pkg install -y
|
||||||
|
bash curl cyrus-sasl git glib gmake gnutls gtk3 gsed libepoxy mesa-libs
|
||||||
|
nettle perl5 pixman pkgconf png SDL2 usbredir
|
||||||
|
script:
|
||||||
|
- ./configure --enable-werror --target-list='alpha-softmmu ppc64-softmmu
|
||||||
|
ppc-softmmu riscv32-softmmu riscv64-softmmu s390x-softmmu
|
||||||
|
sparc64-softmmu sparc-softmmu x86_64-softmmu i386-softmmu
|
||||||
|
sparc-bsd-user sparc64-bsd-user x86_64-bsd-user i386-bsd-user'
|
||||||
|
|| { cat config.log; exit 1; }
|
||||||
|
- gmake -j$(sysctl -n hw.ncpu)
|
||||||
|
- gmake -j$(sysctl -n hw.ncpu) check
|
||||||
|
|
||||||
macos_task:
|
macos_task:
|
||||||
osx_instance:
|
osx_instance:
|
||||||
image: mojave-base
|
image: catalina-base
|
||||||
install_script:
|
install_script:
|
||||||
- brew install pkg-config python gnu-sed glib pixman make sdl2 bash
|
- brew install pkg-config python gnu-sed glib pixman make sdl2 bash
|
||||||
script:
|
script:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; }
|
- ../configure --python=/usr/local/bin/python3 --enable-werror
|
||||||
|
--extra-cflags='-Wno-error=deprecated-declarations'
|
||||||
|
|| { cat config.log; exit 1; }
|
||||||
- gmake -j$(sysctl -n hw.ncpu)
|
- gmake -j$(sysctl -n hw.ncpu)
|
||||||
- gmake check
|
- gmake check
|
||||||
|
|
||||||
macos_xcode_task:
|
macos_xcode_task:
|
||||||
osx_instance:
|
osx_instance:
|
||||||
# this is an alias for the latest Xcode
|
# this is an alias for the latest Xcode
|
||||||
image: mojave-xcode
|
image: catalina-xcode
|
||||||
install_script:
|
install_script:
|
||||||
- brew install pkg-config gnu-sed glib pixman make sdl2 bash
|
- brew install pkg-config gnu-sed glib pixman make sdl2 bash
|
||||||
script:
|
script:
|
||||||
- mkdir build
|
- mkdir build
|
||||||
- cd build
|
- cd build
|
||||||
- ../configure --cc=clang || { cat config.log; exit 1; }
|
- ../configure --extra-cflags='-Wno-error=deprecated-declarations'
|
||||||
|
--enable-werror --cc=clang || { cat config.log; exit 1; }
|
||||||
- gmake -j$(sysctl -n hw.ncpu)
|
- gmake -j$(sysctl -n hw.ncpu)
|
||||||
- gmake check
|
- gmake check
|
||||||
|
|
|
@ -74,6 +74,7 @@ build-system-ubuntu:
|
||||||
moxie-softmmu microblazeel-softmmu mips64el-softmmu
|
moxie-softmmu microblazeel-softmmu mips64el-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
@ -104,6 +105,7 @@ build-system-debian:
|
||||||
riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
|
riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
@ -134,6 +136,7 @@ build-system-fedora:
|
||||||
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
@ -164,6 +167,7 @@ build-system-centos:
|
||||||
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
|
||||||
MAKE_CHECK_ARGS: check-build
|
MAKE_CHECK_ARGS: check-build
|
||||||
artifacts:
|
artifacts:
|
||||||
|
expire_in: 2 days
|
||||||
paths:
|
paths:
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
@ -190,13 +194,25 @@ build-disabled:
|
||||||
<<: *native_build_job_definition
|
<<: *native_build_job_definition
|
||||||
variables:
|
variables:
|
||||||
IMAGE: fedora
|
IMAGE: fedora
|
||||||
CONFIGURE_ARGS: --disable-rdma --disable-slirp --disable-curl
|
CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs
|
||||||
--disable-capstone --disable-live-block-migration --disable-glusterfs
|
--disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone
|
||||||
--disable-replication --disable-coroutine-pool --disable-smartcard
|
--disable-cloop --disable-coroutine-pool --disable-curl --disable-curses
|
||||||
--disable-guest-agent --disable-curses --disable-libxml2 --disable-tpm
|
--disable-dmg --disable-docs --disable-glusterfs --disable-gnutls
|
||||||
--disable-qom-cast-debug --disable-spice --disable-vhost-vsock
|
--disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
|
||||||
--disable-vhost-net --disable-vhost-crypto --disable-vhost-user
|
--disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
|
||||||
TARGETS: i386-softmmu ppc64-softmmu mips64-softmmu i386-linux-user
|
--disable-libxml2 --disable-linux-aio --disable-live-block-migration
|
||||||
|
--disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
|
||||||
|
--disable-numa --disable-parallels --disable-pie --disable-qcow1
|
||||||
|
--disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma
|
||||||
|
--disable-replication --disable-sdl --disable-seccomp --disable-sheepdog
|
||||||
|
--disable-slirp --disable-smartcard --disable-snappy --disable-spice
|
||||||
|
--disable-strip --disable-tpm --disable-usb-redir --disable-vdi
|
||||||
|
--disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
|
||||||
|
--disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock
|
||||||
|
--disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat
|
||||||
|
--disable-xen --disable-zstd
|
||||||
|
TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
|
||||||
|
s390x-softmmu i386-linux-user
|
||||||
MAKE_CHECK_ARGS: check-qtest SPEED=slow
|
MAKE_CHECK_ARGS: check-qtest SPEED=slow
|
||||||
|
|
||||||
build-tcg-disabled:
|
build-tcg-disabled:
|
||||||
|
@ -243,13 +259,15 @@ build-oss-fuzz:
|
||||||
- mkdir build-oss-fuzz
|
- mkdir build-oss-fuzz
|
||||||
- CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
|
- CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
|
||||||
./scripts/oss-fuzz/build.sh
|
./scripts/oss-fuzz/build.sh
|
||||||
|
- export ASAN_OPTIONS="fast_unwind_on_malloc=0"
|
||||||
- for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
|
- for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
|
||||||
| grep -v slirp); do
|
| grep -v slirp); do
|
||||||
grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
|
grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
|
||||||
echo Testing ${fuzzer} ... ;
|
echo Testing ${fuzzer} ... ;
|
||||||
ASAN_OPTIONS="fast_unwind_on_malloc=0"
|
"${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
|
||||||
"${fuzzer}" -runs=1000 -seed=1 || exit 1 ;
|
|
||||||
done
|
done
|
||||||
|
# Unrelated to fuzzer: run some tests with -fsanitize=address
|
||||||
|
- cd build-oss-fuzz && make check-qtest-i386 check-unit
|
||||||
|
|
||||||
build-tci:
|
build-tci:
|
||||||
<<: *native_build_job_definition
|
<<: *native_build_job_definition
|
||||||
|
|
|
@ -159,12 +159,6 @@ jobs:
|
||||||
- CONFIG="--enable-debug-tcg --disable-system"
|
- CONFIG="--enable-debug-tcg --disable-system"
|
||||||
- CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
|
- CACHE_NAME="${TRAVIS_BRANCH}-linux-gcc-debug-tcg"
|
||||||
|
|
||||||
|
|
||||||
- name: "GCC some libs disabled (main-softmmu)"
|
|
||||||
env:
|
|
||||||
- CONFIG="--disable-linux-aio --disable-cap-ng --disable-attr --disable-brlapi --disable-libusb --disable-replication --target-list=${MAIN_SOFTMMU_TARGETS}"
|
|
||||||
|
|
||||||
|
|
||||||
# Module builds are mostly of interest to major distros
|
# Module builds are mostly of interest to major distros
|
||||||
- name: "GCC modules (main-softmmu)"
|
- name: "GCC modules (main-softmmu)"
|
||||||
env:
|
env:
|
||||||
|
|
|
@ -5755,11 +5755,11 @@ int main(void)
|
||||||
{
|
{
|
||||||
uint64_t x = 0, y = 0;
|
uint64_t x = 0, y = 0;
|
||||||
#ifdef __ATOMIC_RELAXED
|
#ifdef __ATOMIC_RELAXED
|
||||||
y = __atomic_load_8(&x, 0);
|
y = __atomic_load_n(&x, __ATOMIC_RELAXED);
|
||||||
__atomic_store_8(&x, y, 0);
|
__atomic_store_n(&x, y, __ATOMIC_RELAXED);
|
||||||
__atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
|
__atomic_compare_exchange_n(&x, &y, x, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
|
||||||
__atomic_exchange_8(&x, y, 0);
|
__atomic_exchange_n(&x, y, __ATOMIC_RELAXED);
|
||||||
__atomic_fetch_add_8(&x, y, 0);
|
__atomic_fetch_add(&x, y, __ATOMIC_RELAXED);
|
||||||
#else
|
#else
|
||||||
typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
|
typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
|
||||||
__sync_lock_test_and_set(&x, y);
|
__sync_lock_test_and_set(&x, y);
|
||||||
|
@ -8065,6 +8065,9 @@ fi
|
||||||
# so the build tree will be missing the link back to the new file, and
|
# so the build tree will be missing the link back to the new file, and
|
||||||
# tests might fail. Prefer to keep the relevant files in their own
|
# tests might fail. Prefer to keep the relevant files in their own
|
||||||
# directory and symlink the directory instead.
|
# directory and symlink the directory instead.
|
||||||
|
# UNLINK is used to remove symlinks from older development versions
|
||||||
|
# that might get into the way when doing "git update" without doing
|
||||||
|
# a "make distclean" in between.
|
||||||
DIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos"
|
DIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos"
|
||||||
DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
|
DIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph"
|
||||||
DIRS="$DIRS docs docs/interop fsdev scsi"
|
DIRS="$DIRS docs docs/interop fsdev scsi"
|
||||||
|
@ -8081,6 +8084,7 @@ LINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit
|
||||||
LINKS="$LINKS tests/acceptance tests/data"
|
LINKS="$LINKS tests/acceptance tests/data"
|
||||||
LINKS="$LINKS tests/qemu-iotests/check"
|
LINKS="$LINKS tests/qemu-iotests/check"
|
||||||
LINKS="$LINKS python"
|
LINKS="$LINKS python"
|
||||||
|
UNLINK="pc-bios/keymaps"
|
||||||
for bios_file in \
|
for bios_file in \
|
||||||
$source_path/pc-bios/*.bin \
|
$source_path/pc-bios/*.bin \
|
||||||
$source_path/pc-bios/*.elf \
|
$source_path/pc-bios/*.elf \
|
||||||
|
@ -8101,6 +8105,11 @@ for f in $LINKS ; do
|
||||||
symlink "$source_path/$f" "$f"
|
symlink "$source_path/$f" "$f"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
for f in $UNLINK ; do
|
||||||
|
if [ -L "$f" ]; then
|
||||||
|
rm -f "$f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
(for i in $cross_cc_vars; do
|
(for i in $cross_cc_vars; do
|
||||||
export $i
|
export $i
|
||||||
|
@ -8163,6 +8172,9 @@ if test -n "$cross_prefix"; then
|
||||||
?:*) pre_prefix=/ ;;
|
?:*) pre_prefix=/ ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
if test "$linux" = "yes" ; then
|
||||||
|
echo "system = 'linux'" >> $cross
|
||||||
|
fi
|
||||||
case "$ARCH" in
|
case "$ARCH" in
|
||||||
i386|x86_64)
|
i386|x86_64)
|
||||||
echo "cpu_family = 'x86'" >> $cross
|
echo "cpu_family = 'x86'" >> $cross
|
||||||
|
|
|
@ -21,7 +21,17 @@
|
||||||
#define AN5206_MBAR_ADDR 0x10000000
|
#define AN5206_MBAR_ADDR 0x10000000
|
||||||
#define AN5206_RAMBAR_ADDR 0x20000000
|
#define AN5206_RAMBAR_ADDR 0x20000000
|
||||||
|
|
||||||
/* Board init. */
|
static void mcf5206_init(MemoryRegion *sysmem, uint32_t base)
|
||||||
|
{
|
||||||
|
DeviceState *dev;
|
||||||
|
SysBusDevice *s;
|
||||||
|
|
||||||
|
dev = qdev_new(TYPE_MCF5206_MBAR);
|
||||||
|
s = SYS_BUS_DEVICE(dev);
|
||||||
|
sysbus_realize_and_unref(s, &error_fatal);
|
||||||
|
|
||||||
|
memory_region_add_subregion(sysmem, base, sysbus_mmio_get_region(s, 0));
|
||||||
|
}
|
||||||
|
|
||||||
static void an5206_init(MachineState *machine)
|
static void an5206_init(MachineState *machine)
|
||||||
{
|
{
|
||||||
|
@ -51,7 +61,7 @@ static void an5206_init(MachineState *machine)
|
||||||
memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_fatal);
|
memory_region_init_ram(sram, NULL, "an5206.sram", 512, &error_fatal);
|
||||||
memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram);
|
memory_region_add_subregion(address_space_mem, AN5206_RAMBAR_ADDR, sram);
|
||||||
|
|
||||||
mcf5206_init(address_space_mem, AN5206_MBAR_ADDR, cpu);
|
mcf5206_init(address_space_mem, AN5206_MBAR_ADDR);
|
||||||
|
|
||||||
/* Load kernel. */
|
/* Load kernel. */
|
||||||
if (!kernel_filename) {
|
if (!kernel_filename) {
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "qemu/timer.h"
|
#include "qemu/timer.h"
|
||||||
#include "hw/ptimer.h"
|
#include "hw/ptimer.h"
|
||||||
#include "sysemu/sysemu.h"
|
#include "sysemu/sysemu.h"
|
||||||
|
#include "hw/sysbus.h"
|
||||||
|
|
||||||
/* General purpose timer module. */
|
/* General purpose timer module. */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -159,6 +160,8 @@ static m5206_timer_state *m5206_timer_init(qemu_irq irq)
|
||||||
/* System Integration Module. */
|
/* System Integration Module. */
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
SysBusDevice parent_obj;
|
||||||
|
|
||||||
M68kCPU *cpu;
|
M68kCPU *cpu;
|
||||||
MemoryRegion iomem;
|
MemoryRegion iomem;
|
||||||
m5206_timer_state *timer[2];
|
m5206_timer_state *timer[2];
|
||||||
|
@ -174,6 +177,8 @@ typedef struct {
|
||||||
uint8_t uivr[2];
|
uint8_t uivr[2];
|
||||||
} m5206_mbar_state;
|
} m5206_mbar_state;
|
||||||
|
|
||||||
|
#define MCF5206_MBAR(obj) OBJECT_CHECK(m5206_mbar_state, (obj), TYPE_MCF5206_MBAR)
|
||||||
|
|
||||||
/* Interrupt controller. */
|
/* Interrupt controller. */
|
||||||
|
|
||||||
static int m5206_find_pending_irq(m5206_mbar_state *s)
|
static int m5206_find_pending_irq(m5206_mbar_state *s)
|
||||||
|
@ -257,8 +262,10 @@ static void m5206_mbar_set_irq(void *opaque, int irq, int level)
|
||||||
|
|
||||||
/* System Integration Module. */
|
/* System Integration Module. */
|
||||||
|
|
||||||
static void m5206_mbar_reset(m5206_mbar_state *s)
|
static void m5206_mbar_reset(DeviceState *dev)
|
||||||
{
|
{
|
||||||
|
m5206_mbar_state *s = MCF5206_MBAR(dev);
|
||||||
|
|
||||||
s->scr = 0xc0;
|
s->scr = 0xc0;
|
||||||
s->icr[1] = 0x04;
|
s->icr[1] = 0x04;
|
||||||
s->icr[2] = 0x08;
|
s->icr[2] = 0x08;
|
||||||
|
@ -578,24 +585,43 @@ static const MemoryRegionOps m5206_mbar_ops = {
|
||||||
.endianness = DEVICE_NATIVE_ENDIAN,
|
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
qemu_irq *mcf5206_init(MemoryRegion *sysmem, uint32_t base, M68kCPU *cpu)
|
static void mcf5206_mbar_realize(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
m5206_mbar_state *s;
|
m5206_mbar_state *s = MCF5206_MBAR(dev);
|
||||||
qemu_irq *pic;
|
qemu_irq *pic;
|
||||||
|
|
||||||
s = g_new0(m5206_mbar_state, 1);
|
|
||||||
|
|
||||||
memory_region_init_io(&s->iomem, NULL, &m5206_mbar_ops, s,
|
memory_region_init_io(&s->iomem, NULL, &m5206_mbar_ops, s,
|
||||||
"mbar", 0x00001000);
|
"mbar", 0x00001000);
|
||||||
memory_region_add_subregion(sysmem, base, &s->iomem);
|
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->iomem);
|
||||||
|
|
||||||
pic = qemu_allocate_irqs(m5206_mbar_set_irq, s, 14);
|
pic = qemu_allocate_irqs(m5206_mbar_set_irq, s, 14);
|
||||||
s->timer[0] = m5206_timer_init(pic[9]);
|
s->timer[0] = m5206_timer_init(pic[9]);
|
||||||
s->timer[1] = m5206_timer_init(pic[10]);
|
s->timer[1] = m5206_timer_init(pic[10]);
|
||||||
s->uart[0] = mcf_uart_init(pic[12], serial_hd(0));
|
s->uart[0] = mcf_uart_init(pic[12], serial_hd(0));
|
||||||
s->uart[1] = mcf_uart_init(pic[13], serial_hd(1));
|
s->uart[1] = mcf_uart_init(pic[13], serial_hd(1));
|
||||||
s->cpu = cpu;
|
s->cpu = M68K_CPU(qemu_get_cpu(0));
|
||||||
|
|
||||||
m5206_mbar_reset(s);
|
|
||||||
return pic;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mcf5206_mbar_class_init(ObjectClass *oc, void *data)
|
||||||
|
{
|
||||||
|
DeviceClass *dc = DEVICE_CLASS(oc);
|
||||||
|
|
||||||
|
set_bit(DEVICE_CATEGORY_MISC, dc->categories);
|
||||||
|
dc->desc = "MCF5206 system integration module";
|
||||||
|
dc->realize = mcf5206_mbar_realize;
|
||||||
|
dc->reset = m5206_mbar_reset;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const TypeInfo mcf5206_mbar_info = {
|
||||||
|
.name = TYPE_MCF5206_MBAR,
|
||||||
|
.parent = TYPE_SYS_BUS_DEVICE,
|
||||||
|
.instance_size = sizeof(m5206_mbar_state),
|
||||||
|
.class_init = mcf5206_mbar_class_init,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void mcf5206_mbar_register_types(void)
|
||||||
|
{
|
||||||
|
type_register_static(&mcf5206_mbar_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
type_init(mcf5206_mbar_register_types)
|
||||||
|
|
|
@ -18,7 +18,6 @@ qemu_irq *mcf_intc_init(struct MemoryRegion *sysmem,
|
||||||
M68kCPU *cpu);
|
M68kCPU *cpu);
|
||||||
|
|
||||||
/* mcf5206.c */
|
/* mcf5206.c */
|
||||||
qemu_irq *mcf5206_init(struct MemoryRegion *sysmem,
|
#define TYPE_MCF5206_MBAR "mcf5206-mbar"
|
||||||
uint32_t base, M68kCPU *cpu);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -38,19 +38,29 @@ if meson.is_cross_build() or 'CONFIG_XKBCOMMON' not in config_host
|
||||||
else
|
else
|
||||||
native_qemu_keymap = qemu_keymap
|
native_qemu_keymap = qemu_keymap
|
||||||
endif
|
endif
|
||||||
|
|
||||||
t = []
|
t = []
|
||||||
foreach km, args: keymaps
|
foreach km, args: keymaps
|
||||||
t += custom_target(km,
|
if native_qemu_keymap.found()
|
||||||
build_by_default: true,
|
# generate with qemu-kvm
|
||||||
output: km,
|
t += custom_target(km,
|
||||||
command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
|
build_by_default: true,
|
||||||
install_dir: qemu_datadir / 'keymaps')
|
output: km,
|
||||||
|
command: [native_qemu_keymap, '-f', '@OUTPUT@', args.split()],
|
||||||
|
install_dir: qemu_datadir / 'keymaps')
|
||||||
|
else
|
||||||
|
# copy from source tree
|
||||||
|
t += custom_target(km,
|
||||||
|
build_by_default: true,
|
||||||
|
input: km,
|
||||||
|
output: km,
|
||||||
|
command: ['cp', '@INPUT@', '@OUTPUT@'],
|
||||||
|
install_dir: qemu_datadir / 'keymaps')
|
||||||
|
endif
|
||||||
endforeach
|
endforeach
|
||||||
if t.length() > 0
|
|
||||||
|
if native_qemu_keymap.found()
|
||||||
alias_target('update-keymaps', t)
|
alias_target('update-keymaps', t)
|
||||||
else
|
|
||||||
# install from the source tree
|
|
||||||
install_data(keymaps.keys(), install_dir: qemu_datadir / 'keymaps')
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps')
|
install_data(['sl', 'sv'], install_dir: qemu_datadir / 'keymaps')
|
||||||
|
|
|
@ -1443,6 +1443,7 @@ static int prepare_iso(size_t size, unsigned char **buf, char **name)
|
||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
int fd = mkstemp(cdrom_path);
|
int fd = mkstemp(cdrom_path);
|
||||||
|
|
||||||
|
g_assert(fd != -1);
|
||||||
g_assert(buf);
|
g_assert(buf);
|
||||||
g_assert(name);
|
g_assert(name);
|
||||||
patt = g_malloc(size);
|
patt = g_malloc(size);
|
||||||
|
|
|
@ -103,7 +103,7 @@ static void test_after_failed_device_add(void)
|
||||||
" 'drive': 'drive0'"
|
" 'drive': 'drive0'"
|
||||||
"}}", driver);
|
"}}", driver);
|
||||||
g_assert(response);
|
g_assert(response);
|
||||||
qmp_assert_error_class(response, "GenericError");
|
qmp_expect_error_and_unref(response, "GenericError");
|
||||||
|
|
||||||
/* Delete the drive */
|
/* Delete the drive */
|
||||||
drive_del(qts);
|
drive_del(qts);
|
||||||
|
|
|
@ -81,7 +81,8 @@ static void kcs_wait_obf(void)
|
||||||
{
|
{
|
||||||
unsigned int count = 1000;
|
unsigned int count = 1000;
|
||||||
while (IPMI_KCS_CMDREG_GET_OBF() == 0) {
|
while (IPMI_KCS_CMDREG_GET_OBF() == 0) {
|
||||||
g_assert(--count != 0);
|
--count;
|
||||||
|
g_assert(count != 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -704,13 +704,13 @@ void qtest_qmp_device_del(QTestState *qts, const char *id);
|
||||||
bool qmp_rsp_is_err(QDict *rsp);
|
bool qmp_rsp_is_err(QDict *rsp);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qmp_assert_error_class:
|
* qmp_expect_error_and_unref:
|
||||||
* @rsp: QMP response to check for error
|
* @rsp: QMP response to check for error
|
||||||
* @class: an error class
|
* @class: an error class
|
||||||
*
|
*
|
||||||
* Assert the response has the given error class and discard @rsp.
|
* Assert the response has the given error class and discard @rsp.
|
||||||
*/
|
*/
|
||||||
void qmp_assert_error_class(QDict *rsp, const char *class);
|
void qmp_expect_error_and_unref(QDict *rsp, const char *class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qtest_probe_child:
|
* qtest_probe_child:
|
||||||
|
|
|
@ -1359,7 +1359,7 @@ bool qmp_rsp_is_err(QDict *rsp)
|
||||||
return !!error;
|
return !!error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qmp_assert_error_class(QDict *rsp, const char *class)
|
void qmp_expect_error_and_unref(QDict *rsp, const char *class)
|
||||||
{
|
{
|
||||||
QDict *error = qdict_get_qdict(rsp, "error");
|
QDict *error = qdict_get_qdict(rsp, "error");
|
||||||
|
|
||||||
|
|
|
@ -210,19 +210,19 @@ static void test_object_add_failure_modes(void)
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
" {'qom-type': 'memory-backend-ram', 'id': 'ram1' } }");
|
" {'qom-type': 'memory-backend-ram', 'id': 'ram1' } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* attempt to create an object without qom-type */
|
/* attempt to create an object without qom-type */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
" {'id': 'ram1' } }");
|
" {'id': 'ram1' } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* attempt to delete an object that does not exist */
|
/* attempt to delete an object that does not exist */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
||||||
" {'id': 'ram1' } }");
|
" {'id': 'ram1' } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* attempt to create 2 objects with duplicate id */
|
/* attempt to create 2 objects with duplicate id */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
|
@ -236,7 +236,7 @@ static void test_object_add_failure_modes(void)
|
||||||
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
||||||
" 'props': {'size': 1048576 } } }");
|
" 'props': {'size': 1048576 } } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* delete ram1 object */
|
/* delete ram1 object */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
||||||
|
@ -251,7 +251,7 @@ static void test_object_add_failure_modes(void)
|
||||||
" 'props': {'size': '1048576' } } }");
|
" 'props': {'size': '1048576' } } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
/* now do it right */
|
/* now do it right */
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
||||||
|
@ -272,7 +272,7 @@ static void test_object_add_failure_modes(void)
|
||||||
" {'qom-type': 'memory-backend-ram',"
|
" {'qom-type': 'memory-backend-ram',"
|
||||||
" 'props': {'size': 1048576 } } }");
|
" 'props': {'size': 1048576 } } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* now do it right */
|
/* now do it right */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
|
@ -294,7 +294,7 @@ static void test_object_add_failure_modes(void)
|
||||||
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
" {'qom-type': 'memory-backend-ram', 'id': 'ram1',"
|
||||||
" 'props': {'sized': 1048576 } } }");
|
" 'props': {'sized': 1048576 } } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* now do it right */
|
/* now do it right */
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-add', 'arguments':"
|
||||||
|
@ -321,7 +321,7 @@ static void test_object_add_failure_modes(void)
|
||||||
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'object-del', 'arguments':"
|
||||||
" {'id': 'ram1' } }");
|
" {'id': 'ram1' } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
qtest_quit(qts);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ static void assert_recovered(QTestState *qts)
|
||||||
QDict *resp;
|
QDict *resp;
|
||||||
|
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd' }");
|
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd' }");
|
||||||
qmp_assert_error_class(resp, "CommandNotFound");
|
qmp_expect_error_and_unref(resp, "CommandNotFound");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_malformed(QTestState *qts)
|
static void test_malformed(QTestState *qts)
|
||||||
|
@ -48,58 +48,58 @@ static void test_malformed(QTestState *qts)
|
||||||
/* syntax error */
|
/* syntax error */
|
||||||
qtest_qmp_send_raw(qts, "{]\n");
|
qtest_qmp_send_raw(qts, "{]\n");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* lexical error: impossible byte outside string */
|
/* lexical error: impossible byte outside string */
|
||||||
qtest_qmp_send_raw(qts, "{\xFF");
|
qtest_qmp_send_raw(qts, "{\xFF");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* lexical error: funny control character outside string */
|
/* lexical error: funny control character outside string */
|
||||||
qtest_qmp_send_raw(qts, "{\x01");
|
qtest_qmp_send_raw(qts, "{\x01");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* lexical error: impossible byte in string */
|
/* lexical error: impossible byte in string */
|
||||||
qtest_qmp_send_raw(qts, "{'bad \xFF");
|
qtest_qmp_send_raw(qts, "{'bad \xFF");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* lexical error: control character in string */
|
/* lexical error: control character in string */
|
||||||
qtest_qmp_send_raw(qts, "{'execute': 'nonexistent', 'id':'\n");
|
qtest_qmp_send_raw(qts, "{'execute': 'nonexistent', 'id':'\n");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* lexical error: interpolation */
|
/* lexical error: interpolation */
|
||||||
qtest_qmp_send_raw(qts, "%%p");
|
qtest_qmp_send_raw(qts, "%%p");
|
||||||
resp = qtest_qmp_receive(qts);
|
resp = qtest_qmp_receive(qts);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
assert_recovered(qts);
|
assert_recovered(qts);
|
||||||
|
|
||||||
/* Not even a dictionary */
|
/* Not even a dictionary */
|
||||||
resp = qtest_qmp(qts, "null");
|
resp = qtest_qmp(qts, "null");
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* No "execute" key */
|
/* No "execute" key */
|
||||||
resp = qtest_qmp(qts, "{}");
|
resp = qtest_qmp(qts, "{}");
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* "execute" isn't a string */
|
/* "execute" isn't a string */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': true }");
|
resp = qtest_qmp(qts, "{ 'execute': true }");
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* "arguments" isn't a dictionary */
|
/* "arguments" isn't a dictionary */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'arguments': [] }");
|
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'arguments': [] }");
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
/* extra key */
|
/* extra key */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'extra': true }");
|
resp = qtest_qmp(qts, "{ 'execute': 'no-such-cmd', 'extra': true }");
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_qmp_protocol(void)
|
static void test_qmp_protocol(void)
|
||||||
|
@ -121,7 +121,7 @@ static void test_qmp_protocol(void)
|
||||||
|
|
||||||
/* Test valid command before handshake */
|
/* Test valid command before handshake */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'query-version' }");
|
resp = qtest_qmp(qts, "{ 'execute': 'query-version' }");
|
||||||
qmp_assert_error_class(resp, "CommandNotFound");
|
qmp_expect_error_and_unref(resp, "CommandNotFound");
|
||||||
|
|
||||||
/* Test malformed commands before handshake */
|
/* Test malformed commands before handshake */
|
||||||
test_malformed(qts);
|
test_malformed(qts);
|
||||||
|
@ -134,7 +134,7 @@ static void test_qmp_protocol(void)
|
||||||
|
|
||||||
/* Test repeated handshake */
|
/* Test repeated handshake */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'qmp_capabilities' }");
|
resp = qtest_qmp(qts, "{ 'execute': 'qmp_capabilities' }");
|
||||||
qmp_assert_error_class(resp, "CommandNotFound");
|
qmp_expect_error_and_unref(resp, "CommandNotFound");
|
||||||
|
|
||||||
/* Test valid command */
|
/* Test valid command */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'query-version' }");
|
resp = qtest_qmp(qts, "{ 'execute': 'query-version' }");
|
||||||
|
@ -154,7 +154,7 @@ static void test_qmp_protocol(void)
|
||||||
/* Test command failure with 'id' */
|
/* Test command failure with 'id' */
|
||||||
resp = qtest_qmp(qts, "{ 'execute': 'human-monitor-command', 'id': 2 }");
|
resp = qtest_qmp(qts, "{ 'execute': 'human-monitor-command', 'id': 2 }");
|
||||||
g_assert_cmpint(qdict_get_int(resp, "id"), ==, 2);
|
g_assert_cmpint(qdict_get_int(resp, "id"), ==, 2);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
|
|
||||||
qtest_quit(qts);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
@ -327,7 +327,7 @@ static void test_qmp_missing_any_arg(void)
|
||||||
resp = qtest_qmp(qts, "{'execute': 'qom-set', 'arguments':"
|
resp = qtest_qmp(qts, "{'execute': 'qom-set', 'arguments':"
|
||||||
" { 'path': '/machine', 'property': 'rtc-time' } }");
|
" { 'path': '/machine', 'property': 'rtc-time' } }");
|
||||||
g_assert_nonnull(resp);
|
g_assert_nonnull(resp);
|
||||||
qmp_assert_error_class(resp, "GenericError");
|
qmp_expect_error_and_unref(resp, "GenericError");
|
||||||
qtest_quit(qts);
|
qtest_quit(qts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ void tpm_test_swtpm_test(const char *src_tpm_path, tx_func *tx,
|
||||||
tpm_util_startup(s, tx);
|
tpm_util_startup(s, tx);
|
||||||
tpm_util_pcrextend(s, tx);
|
tpm_util_pcrextend(s, tx);
|
||||||
|
|
||||||
unsigned char tpm_pcrread_resp[] =
|
static const unsigned char tpm_pcrread_resp[] =
|
||||||
"\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00"
|
"\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00"
|
||||||
"\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85"
|
"\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85"
|
||||||
"\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89"
|
"\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89"
|
||||||
|
@ -107,7 +107,7 @@ void tpm_test_swtpm_migration_test(const char *src_tpm_path,
|
||||||
tpm_util_startup(src_qemu, tx);
|
tpm_util_startup(src_qemu, tx);
|
||||||
tpm_util_pcrextend(src_qemu, tx);
|
tpm_util_pcrextend(src_qemu, tx);
|
||||||
|
|
||||||
unsigned char tpm_pcrread_resp[] =
|
static const unsigned char tpm_pcrread_resp[] =
|
||||||
"\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00"
|
"\x80\x01\x00\x00\x00\x3e\x00\x00\x00\x00\x00\x00\x00\x16\x00\x00"
|
||||||
"\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85"
|
"\x00\x01\x00\x0b\x03\x00\x04\x00\x00\x00\x00\x01\x00\x20\xf6\x85"
|
||||||
"\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89"
|
"\x98\xe5\x86\x8d\xe6\x8b\x97\x29\x99\x60\xf2\x71\x7d\x17\x67\x89"
|
||||||
|
|
|
@ -98,9 +98,9 @@ void tpm_util_tis_transfer(QTestState *s,
|
||||||
void tpm_util_startup(QTestState *s, tx_func *tx)
|
void tpm_util_startup(QTestState *s, tx_func *tx)
|
||||||
{
|
{
|
||||||
unsigned char buffer[1024];
|
unsigned char buffer[1024];
|
||||||
unsigned char tpm_startup[] =
|
static const unsigned char tpm_startup[] =
|
||||||
"\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x44\x00\x00";
|
"\x80\x01\x00\x00\x00\x0c\x00\x00\x01\x44\x00\x00";
|
||||||
unsigned char tpm_startup_resp[] =
|
static const unsigned char tpm_startup_resp[] =
|
||||||
"\x80\x01\x00\x00\x00\x0a\x00\x00\x00\x00";
|
"\x80\x01\x00\x00\x00\x0a\x00\x00\x00\x00";
|
||||||
|
|
||||||
tx(s, tpm_startup, sizeof(tpm_startup), buffer, sizeof(buffer));
|
tx(s, tpm_startup, sizeof(tpm_startup), buffer, sizeof(buffer));
|
||||||
|
@ -112,14 +112,14 @@ void tpm_util_startup(QTestState *s, tx_func *tx)
|
||||||
void tpm_util_pcrextend(QTestState *s, tx_func *tx)
|
void tpm_util_pcrextend(QTestState *s, tx_func *tx)
|
||||||
{
|
{
|
||||||
unsigned char buffer[1024];
|
unsigned char buffer[1024];
|
||||||
unsigned char tpm_pcrextend[] =
|
static const unsigned char tpm_pcrextend[] =
|
||||||
"\x80\x02\x00\x00\x00\x41\x00\x00\x01\x82\x00\x00\x00\x0a\x00\x00"
|
"\x80\x02\x00\x00\x00\x41\x00\x00\x01\x82\x00\x00\x00\x0a\x00\x00"
|
||||||
"\x00\x09\x40\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00"
|
"\x00\x09\x40\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00"
|
||||||
"\x0b\x74\x65\x73\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
"\x0b\x74\x65\x73\x74\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||||
"\x00";
|
"\x00";
|
||||||
|
|
||||||
unsigned char tpm_pcrextend_resp[] =
|
static const unsigned char tpm_pcrextend_resp[] =
|
||||||
"\x80\x02\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
"\x80\x02\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
||||||
"\x01\x00\x00";
|
"\x01\x00\x00";
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ void tpm_util_pcrread(QTestState *s, tx_func *tx,
|
||||||
const unsigned char *exp_resp, size_t exp_resp_size)
|
const unsigned char *exp_resp, size_t exp_resp_size)
|
||||||
{
|
{
|
||||||
unsigned char buffer[1024];
|
unsigned char buffer[1024];
|
||||||
unsigned char tpm_pcrread[] =
|
static const unsigned char tpm_pcrread[] =
|
||||||
"\x80\x01\x00\x00\x00\x14\x00\x00\x01\x7e\x00\x00\x00\x01\x00\x0b"
|
"\x80\x01\x00\x00\x00\x14\x00\x00\x01\x7e\x00\x00\x00\x01\x00\x0b"
|
||||||
"\x03\x00\x04\x00";
|
"\x03\x00\x04\x00";
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,7 @@ static void test_qga_invalid_oob(gconstpointer fix)
|
||||||
ret = qmp_fd(fixture->fd, "{'exec-oob': 'guest-ping'}");
|
ret = qmp_fd(fixture->fd, "{'exec-oob': 'guest-ping'}");
|
||||||
g_assert_nonnull(ret);
|
g_assert_nonnull(ret);
|
||||||
|
|
||||||
qmp_assert_error_class(ret, "GenericError");
|
qmp_expect_error_and_unref(ret, "GenericError");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_qga_invalid_args(gconstpointer fix)
|
static void test_qga_invalid_args(gconstpointer fix)
|
||||||
|
|
Loading…
Reference in New Issue