* Convert more Avocado tests to the new functional test framework
* Clean up assert() statements, use g_assert_not_reached() when possible * Improve output of the gitlab CI jobs -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmbz7xgRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbWm6A//eVn+tzyyKCX/xdXlf7XyVpezvRpTFPOS HyO0WMkCf2kGmu6qYKx/fDZg86opdQzPLH2gPkuVrGOMZ0Z2630DjH0jNih8lL9Q J1oRX5YlU92chlzNmq59WB/j9CKd91ILtOoaPBuZkDob57yGEYVzCPqetVvF7L2+ +rbnccrNPumGJFt035fxUGiGfgsmp28MHQzDwQdyr38uGjyNlqvqidfC8Vj1qzqP B7HvhGB/vkF0eHaanMt2el/ZuLKf+qeCi//F/CiXGMYnuKXyShA/Db6xvMElw1jB aQdwphP71IO+cxjJLaNjDHKGFstArsM/E21qlaSTBi+FTmPiwVULpVTiBmWsjhOh /klpdgRHf0hL2MciYKyOWgjlTocx3rEKjCTe2U5tpta9fp9CrlgMQotjDZIbohGI ULNahrW3Zmg4EmXDApfhYMXsQsSgWas9QSkmxzJzDp0VC7tf2Oq7RxeySrlw9MCx OG2qQY+rNcJ3NnpATjfAJpT1kg/IahDOCNHfLEaj1u13XVQIthVADvHwy5WxbwRP mwp3V9e9sUoznkM2eV646lzmkMim/WdYBF0YpT7eBs80+GoXZ0thx9IqWmwzX/ox rndBczVN+RY6PydJP40yljdvS7ArRT73wHqL6yKHfDpvFc4/p5mxTWwLQ3yJbXbE T3I+wtgfBU8= =FH7b -----END PGP SIGNATURE----- Merge tag 'pull-request-2024-09-25' of https://gitlab.com/thuth/qemu into staging * Convert more Avocado tests to the new functional test framework * Clean up assert() statements, use g_assert_not_reached() when possible * Improve output of the gitlab CI jobs # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmbz7xgRHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbWm6A//eVn+tzyyKCX/xdXlf7XyVpezvRpTFPOS # HyO0WMkCf2kGmu6qYKx/fDZg86opdQzPLH2gPkuVrGOMZ0Z2630DjH0jNih8lL9Q # J1oRX5YlU92chlzNmq59WB/j9CKd91ILtOoaPBuZkDob57yGEYVzCPqetVvF7L2+ # +rbnccrNPumGJFt035fxUGiGfgsmp28MHQzDwQdyr38uGjyNlqvqidfC8Vj1qzqP # B7HvhGB/vkF0eHaanMt2el/ZuLKf+qeCi//F/CiXGMYnuKXyShA/Db6xvMElw1jB # aQdwphP71IO+cxjJLaNjDHKGFstArsM/E21qlaSTBi+FTmPiwVULpVTiBmWsjhOh # /klpdgRHf0hL2MciYKyOWgjlTocx3rEKjCTe2U5tpta9fp9CrlgMQotjDZIbohGI # ULNahrW3Zmg4EmXDApfhYMXsQsSgWas9QSkmxzJzDp0VC7tf2Oq7RxeySrlw9MCx # OG2qQY+rNcJ3NnpATjfAJpT1kg/IahDOCNHfLEaj1u13XVQIthVADvHwy5WxbwRP # mwp3V9e9sUoznkM2eV646lzmkMim/WdYBF0YpT7eBs80+GoXZ0thx9IqWmwzX/ox # rndBczVN+RY6PydJP40yljdvS7ArRT73wHqL6yKHfDpvFc4/p5mxTWwLQ3yJbXbE # T3I+wtgfBU8= # =FH7b # -----END PGP SIGNATURE----- # gpg: Signature made Wed 25 Sep 2024 12:08:08 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 * tag 'pull-request-2024-09-25' of https://gitlab.com/thuth/qemu: (44 commits) .gitlab-ci.d: Make separate collapsible log sections for build and test .gitlab-ci.d: Split build and test in cross build job templates scripts/checkpatch.pl: emit error when using assert(false) tests/qtest: remove return after g_assert_not_reached() qom: remove return after g_assert_not_reached() qobject: remove return after g_assert_not_reached() migration: remove return after g_assert_not_reached() hw/ppc: remove return after g_assert_not_reached() hw/pci: remove return after g_assert_not_reached() hw/net: remove return after g_assert_not_reached() hw/hyperv: remove return after g_assert_not_reached() include/qemu: remove return after g_assert_not_reached() tcg/loongarch64: remove break after g_assert_not_reached() fpu: remove break after g_assert_not_reached() target/riscv: remove break after g_assert_not_reached() target/arm: remove break after g_assert_not_reached() hw/tpm: remove break after g_assert_not_reached() hw/scsi: remove break after g_assert_not_reached() hw/net: remove break after g_assert_not_reached() hw/acpi: remove break after g_assert_not_reached() ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
173c427eb5
@ -8,8 +8,11 @@
|
||||
key: "$CI_JOB_NAME"
|
||||
when: always
|
||||
before_script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- section_start setup "Pre-script setup"
|
||||
- JOBS=$(expr $(nproc) + 1)
|
||||
- cat /packages.txt
|
||||
- section_end setup
|
||||
script:
|
||||
- export CCACHE_BASEDIR="$(pwd)"
|
||||
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
||||
@ -19,6 +22,7 @@
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ccache --zero-stats
|
||||
- section_start configure "Running configure"
|
||||
- ../configure --enable-werror --disable-docs --enable-fdt=system
|
||||
${TARGETS:+--target-list="$TARGETS"}
|
||||
$CONFIGURE_ARGS ||
|
||||
@ -27,11 +31,16 @@
|
||||
then
|
||||
pyvenv/bin/meson configure . -Dbackend_max_links="$LD_JOBS" ;
|
||||
fi || exit 1;
|
||||
- section_end configure
|
||||
- section_start build "Building QEMU"
|
||||
- $MAKE -j"$JOBS"
|
||||
- section_end build
|
||||
- section_start test "Running tests"
|
||||
- if test -n "$MAKE_CHECK_ARGS";
|
||||
then
|
||||
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||
fi
|
||||
- section_end test
|
||||
- ccache --show-stats
|
||||
|
||||
# We jump some hoops in common_test_job_template to avoid
|
||||
@ -54,6 +63,8 @@
|
||||
stage: test
|
||||
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:$QEMU_CI_CONTAINER_TAG
|
||||
script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- section_start buildenv "Setting up to run tests"
|
||||
- scripts/git-submodule.sh update roms/SLOF
|
||||
- meson subprojects download $(cd build/subprojects && echo *)
|
||||
- cd build
|
||||
@ -63,7 +74,10 @@
|
||||
- if [ "x${QEMU_TEST_CACHE_DIR}" != "x" ]; then
|
||||
$MAKE precache-functional ;
|
||||
fi
|
||||
- section_end buildenv
|
||||
- section_start test "Running tests"
|
||||
- $MAKE NINJA=":" $MAKE_CHECK_ARGS
|
||||
- section_end test
|
||||
|
||||
.native_test_job_template:
|
||||
extends: .common_test_job_template
|
||||
|
@ -188,6 +188,7 @@ build-previous-qemu:
|
||||
# Override the default flags as we need more to grab the old version
|
||||
GIT_FETCH_EXTRA_FLAGS: --prune --quiet
|
||||
before_script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
|
||||
- git remote add upstream https://gitlab.com/qemu-project/qemu
|
||||
- git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION
|
||||
|
@ -9,7 +9,11 @@
|
||||
when: always
|
||||
timeout: 80m
|
||||
before_script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- section_start setup "Pre-script setup"
|
||||
- JOBS=$(expr $(nproc) + 1)
|
||||
- cat /packages.txt
|
||||
- section_end setup
|
||||
script:
|
||||
- export CCACHE_BASEDIR="$(pwd)"
|
||||
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
||||
@ -18,18 +22,30 @@
|
||||
- mkdir build
|
||||
- cd build
|
||||
- ccache --zero-stats
|
||||
- section_start configure "Running configure"
|
||||
- ../configure --enable-werror --disable-docs --enable-fdt=system
|
||||
--disable-user $QEMU_CONFIGURE_OPTS $EXTRA_CONFIGURE_OPTS
|
||||
--target-list-exclude="arm-softmmu
|
||||
i386-softmmu microblaze-softmmu mips-softmmu mipsel-softmmu
|
||||
mips64-softmmu ppc-softmmu riscv32-softmmu sh4-softmmu
|
||||
sparc-softmmu xtensa-softmmu $CROSS_SKIP_TARGETS"
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
- section_end configure
|
||||
- section_start build "Building QEMU"
|
||||
- make -j"$JOBS" all check-build
|
||||
- section_end build
|
||||
- section_start test "Running tests"
|
||||
- if test -n "$MAKE_CHECK_ARGS";
|
||||
then
|
||||
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||
fi
|
||||
- section_end test
|
||||
- section_start installer "Building the installer"
|
||||
- if grep -q "EXESUF=.exe" config-host.mak;
|
||||
then make installer;
|
||||
version="$(git describe --match v[0-9]* 2>/dev/null || git rev-parse --short HEAD)";
|
||||
mv -v qemu-setup*.exe qemu-setup-${version}.exe;
|
||||
fi
|
||||
- section_end installer
|
||||
- ccache --show-stats
|
||||
|
||||
# Job to cross-build specific accelerators.
|
||||
@ -46,6 +62,9 @@
|
||||
paths:
|
||||
- ccache/
|
||||
key: "$CI_JOB_NAME"
|
||||
before_script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- JOBS=$(expr $(nproc) + 1)
|
||||
script:
|
||||
- export CCACHE_BASEDIR="$(pwd)"
|
||||
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
||||
@ -53,9 +72,19 @@
|
||||
- export PATH="$CCACHE_WRAPPERSDIR:$PATH"
|
||||
- mkdir build
|
||||
- cd build
|
||||
- section_start configure "Running configure"
|
||||
- ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
||||
--disable-tools --enable-${ACCEL:-kvm} $EXTRA_CONFIGURE_OPTS
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
- section_end configure
|
||||
- section_start build "Building QEMU"
|
||||
- make -j"$JOBS" all check-build
|
||||
- section_end build
|
||||
- section_start test "Running tests"
|
||||
- if test -n "$MAKE_CHECK_ARGS";
|
||||
then
|
||||
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||
fi
|
||||
- section_end test
|
||||
|
||||
.cross_user_build_job:
|
||||
extends: .base_job_template
|
||||
@ -65,18 +94,31 @@
|
||||
paths:
|
||||
- ccache/
|
||||
key: "$CI_JOB_NAME"
|
||||
before_script:
|
||||
- source scripts/ci/gitlab-ci-section
|
||||
- JOBS=$(expr $(nproc) + 1)
|
||||
script:
|
||||
- export CCACHE_BASEDIR="$(pwd)"
|
||||
- export CCACHE_DIR="$CCACHE_BASEDIR/ccache"
|
||||
- export CCACHE_MAXSIZE="500M"
|
||||
- mkdir build
|
||||
- cd build
|
||||
- section_start configure "Running configure"
|
||||
- ../configure --enable-werror --disable-docs $QEMU_CONFIGURE_OPTS
|
||||
--disable-system --target-list-exclude="aarch64_be-linux-user
|
||||
alpha-linux-user m68k-linux-user microblazeel-linux-user
|
||||
or1k-linux-user ppc-linux-user sparc-linux-user
|
||||
xtensa-linux-user $CROSS_SKIP_TARGETS"
|
||||
- make -j$(expr $(nproc) + 1) all check-build $MAKE_CHECK_ARGS
|
||||
- section_end configure
|
||||
- section_start build "Building QEMU"
|
||||
- make -j"$JOBS" all check-build
|
||||
- section_end build
|
||||
- section_start test "Running tests"
|
||||
- if test -n "$MAKE_CHECK_ARGS";
|
||||
then
|
||||
$MAKE -j"$JOBS" $MAKE_CHECK_ARGS ;
|
||||
fi
|
||||
- section_end test
|
||||
|
||||
# We can still run some tests on some of our cross build jobs. They can add this
|
||||
# template to their extends to save the build logs and test results
|
||||
|
@ -1005,6 +1005,7 @@ S: Maintained
|
||||
F: hw/arm/vexpress.c
|
||||
F: hw/display/sii9022.c
|
||||
F: docs/system/arm/vexpress.rst
|
||||
F: tests/functional/test_arm_vexpress.py
|
||||
|
||||
Versatile PB
|
||||
M: Peter Maydell <peter.maydell@linaro.org>
|
||||
@ -1444,6 +1445,7 @@ F: pc-bios/u-boot.e500
|
||||
F: hw/intc/openpic_kvm.c
|
||||
F: include/hw/ppc/openpic_kvm.h
|
||||
F: docs/system/ppc/ppce500.rst
|
||||
F: tests/functional/test_ppc64_e500.py
|
||||
|
||||
mpc8544ds
|
||||
L: qemu-ppc@nongnu.org
|
||||
@ -1472,6 +1474,7 @@ F: include/hw/ppc/mac_dbdma.h
|
||||
F: include/hw/pci-host/uninorth.h
|
||||
F: include/hw/input/adb*
|
||||
F: pc-bios/qemu_vga.ndrv
|
||||
F: tests/functional/test_ppc_mac.py
|
||||
|
||||
Old World (g3beige)
|
||||
M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
|
||||
@ -1487,6 +1490,7 @@ F: include/hw/intc/heathrow_pic.h
|
||||
F: include/hw/input/adb*
|
||||
F: include/hw/pci-host/grackle.h
|
||||
F: pc-bios/qemu_vga.ndrv
|
||||
F: tests/functional/test_ppc_mac.py
|
||||
|
||||
PReP
|
||||
M: Hervé Poussineau <hpoussin@reactos.org>
|
||||
@ -1675,6 +1679,7 @@ F: hw/pci-host/sh_pci.c
|
||||
F: hw/timer/sh_timer.c
|
||||
F: include/hw/sh4/sh_intc.h
|
||||
F: include/hw/timer/tmu012.h
|
||||
F: tests/functional/test_sh4_r2d.py
|
||||
|
||||
SPARC Machines
|
||||
--------------
|
||||
@ -1692,6 +1697,7 @@ F: include/hw/nvram/sun_nvram.h
|
||||
F: include/hw/sparc/sparc32_dma.h
|
||||
F: include/hw/sparc/sun4m_iommu.h
|
||||
F: pc-bios/openbios-sparc32
|
||||
F: tests/functional/test_sparc_sun4m.py
|
||||
|
||||
Sun4u
|
||||
M: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
|
||||
@ -1914,6 +1920,7 @@ S: Maintained
|
||||
F: hw/xtensa/xtfpga.c
|
||||
F: hw/net/opencores_eth.c
|
||||
F: include/hw/xtensa/mx_pic.h
|
||||
F: tests/functional/test_xtensa_lx60.py
|
||||
|
||||
Devices
|
||||
-------
|
||||
|
@ -251,7 +251,6 @@ static void inject_mem_cb(struct qemu_plugin_dyn_cb *cb,
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5299,7 +5299,7 @@ qcow2_get_specific_info(BlockDriverState *bs, Error **errp)
|
||||
} else {
|
||||
/* if this assertion fails, this probably means a new version was
|
||||
* added without having it covered here */
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (encrypt_info) {
|
||||
|
@ -474,7 +474,6 @@ static int check_host_key(BDRVSSHState *s, SshHostKeyCheck *hkc, Error **errp)
|
||||
errp);
|
||||
}
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
case SSH_HOST_KEY_CHECK_MODE_KNOWN_HOSTS:
|
||||
return check_host_key_knownhosts(s, errp);
|
||||
default:
|
||||
|
@ -1373,7 +1373,6 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, FloatPartsN *b,
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
switch (b->cls) {
|
||||
case float_class_normal:
|
||||
@ -1386,7 +1385,6 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, FloatPartsN *b,
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -534,8 +534,7 @@ void aml_append(Aml *parent_ctx, Aml *child)
|
||||
case AML_NO_OPCODE:
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
break;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
build_append_array(parent_ctx->buf, buf);
|
||||
build_free_array(buf);
|
||||
|
@ -199,7 +199,7 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
|
||||
machine->cpu_type = ARM_CPU_TYPE_NAME("cortex-a15");
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
for (n = 0; n < smp_cpus; n++) {
|
||||
|
@ -88,8 +88,7 @@ static TestSintRoute *sint_route_find(HypervTestDev *dev,
|
||||
return sint_route;
|
||||
}
|
||||
}
|
||||
assert(false);
|
||||
return NULL;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static void sint_route_destroy(HypervTestDev *dev,
|
||||
@ -187,7 +186,7 @@ static void msg_conn_destroy(HypervTestDev *dev, uint8_t conn_id)
|
||||
return;
|
||||
}
|
||||
}
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static void evt_conn_handler(EventNotifier *notifier)
|
||||
@ -237,7 +236,7 @@ static void evt_conn_destroy(HypervTestDev *dev, uint8_t conn_id)
|
||||
return;
|
||||
}
|
||||
}
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static uint64_t hv_test_dev_read(void *opaque, hwaddr addr, unsigned size)
|
||||
|
@ -1874,7 +1874,7 @@ static void send_create_gpadl(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static bool complete_create_gpadl(VMBus *vmbus)
|
||||
@ -1889,8 +1889,7 @@ static bool complete_create_gpadl(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static void handle_gpadl_teardown(VMBus *vmbus,
|
||||
@ -1931,7 +1930,7 @@ static void send_teardown_gpadl(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static bool complete_teardown_gpadl(VMBus *vmbus)
|
||||
@ -1946,8 +1945,7 @@ static bool complete_teardown_gpadl(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static void handle_open_channel(VMBus *vmbus, vmbus_message_open_channel *msg,
|
||||
@ -1996,7 +1994,7 @@ static void send_open_channel(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static bool complete_open_channel(VMBus *vmbus)
|
||||
@ -2020,8 +2018,7 @@ static bool complete_open_channel(VMBus *vmbus)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static void vdev_reset_on_close(VMBusDevice *vdev)
|
||||
|
@ -561,8 +561,7 @@ e1000e_rss_calc_hash(E1000ECore *core,
|
||||
type = NetPktRssIpV6Ex;
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
return 0;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return net_rx_pkt_calc_rss_hash(pkt, type, (uint8_t *) &core->mac[RSSRK]);
|
||||
@ -841,7 +840,6 @@ e1000e_ring_free_descr_num(E1000ECore *core, const E1000ERingInfo *r)
|
||||
}
|
||||
|
||||
g_assert_not_reached();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
@ -282,7 +282,7 @@ static void command_loop(I82596State *s)
|
||||
case CmdDump:
|
||||
case CmdDiagnose:
|
||||
printf("FIXME Command %d !!\n", cmd & 7);
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/* update status */
|
||||
|
@ -397,8 +397,7 @@ igb_rss_calc_hash(IGBCore *core, struct NetRxPkt *pkt, E1000E_RSSInfo *info)
|
||||
type = NetPktRssIpV6Udp;
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
return 0;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return net_rx_pkt_calc_rss_hash(pkt, type, (uint8_t *) &core->mac[RSSRK]);
|
||||
@ -747,7 +746,6 @@ igb_ring_free_descr_num(IGBCore *core, const E1000ERingInfo *r)
|
||||
}
|
||||
|
||||
g_assert_not_reached();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
|
@ -375,8 +375,7 @@ net_rx_pkt_calc_rss_hash(struct NetRxPkt *pkt,
|
||||
_net_rx_rss_prepare_udp(&rss_input[0], pkt, &rss_length);
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
break;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
net_toeplitz_key_init(&key_data, key);
|
||||
|
@ -456,7 +456,6 @@ vmxnet3_setup_tx_offloads(VMXNET3State *s)
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -1816,7 +1816,7 @@ static uint16_t nvme_check_zone_state_for_write(NvmeZone *zone)
|
||||
trace_pci_nvme_err_zone_is_read_only(zslba);
|
||||
return NVME_ZONE_READ_ONLY;
|
||||
default:
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NVME_INTERNAL_DEV_ERROR;
|
||||
@ -1870,7 +1870,7 @@ static uint16_t nvme_check_zone_state_for_read(NvmeZone *zone)
|
||||
trace_pci_nvme_err_zone_is_offline(zone->d.zslba);
|
||||
return NVME_ZONE_OFFLINE;
|
||||
default:
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NVME_INTERNAL_DEV_ERROR;
|
||||
@ -4654,7 +4654,7 @@ static uint16_t nvme_io_cmd(NvmeCtrl *n, NvmeRequest *req)
|
||||
case NVME_CMD_IO_MGMT_SEND:
|
||||
return nvme_io_mgmt_send(n, req);
|
||||
default:
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NVME_INVALID_OPCODE | NVME_DNR;
|
||||
@ -7205,7 +7205,7 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeRequest *req)
|
||||
case NVME_ADM_CMD_DIRECTIVE_RECV:
|
||||
return nvme_directive_receive(n, req);
|
||||
default:
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NVME_INVALID_OPCODE | NVME_DNR;
|
||||
|
@ -46,14 +46,12 @@ void hmp_pcie_aer_inject_error(Monitor *mon, const QDict *qdict)
|
||||
/* kvm-all wants this */
|
||||
MSIMessage pci_get_msi_message(PCIDevice *dev, int vector)
|
||||
{
|
||||
g_assert(false);
|
||||
return (MSIMessage){};
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
uint16_t pci_requester_id(PCIDevice *dev)
|
||||
{
|
||||
g_assert(false);
|
||||
return 0;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/* Required by ahci.c */
|
||||
|
@ -267,7 +267,6 @@ static void power9_set_irq(void *opaque, int pin, int level)
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -645,8 +645,7 @@ static void spapr_hotplug_req_event(uint8_t hp_id, uint8_t hp_action,
|
||||
/* we shouldn't be signaling hotplug events for resources
|
||||
* that don't support them
|
||||
*/
|
||||
g_assert(false);
|
||||
return;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (hp_id == RTAS_LOG_V6_HP_ID_DRC_COUNT) {
|
||||
|
@ -357,7 +357,6 @@ static void virtio_scsi_do_one_tmf_bh(VirtIOSCSIReq *req)
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
out:
|
||||
|
@ -206,7 +206,6 @@ static int tpm_spapr_do_crq(struct SpaprVioDevice *dev, uint8_t *crq_data)
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
trace_tpm_spapr_do_crq_get_version(be32_to_cpu(local_crq.data));
|
||||
spapr_tpm_send_crq(dev, &local_crq);
|
||||
|
@ -22,7 +22,6 @@ pmem_memcpy_persist(void *pmemdest, const void *src, size_t len)
|
||||
/* If 'pmem' option is 'on', we should always have libpmem support,
|
||||
or qemu will report a error and exit, never come here. */
|
||||
g_assert_not_reached();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
|
@ -228,8 +228,7 @@ static int time_unit_to_power(TimeUnit time_unit)
|
||||
case TIME_UNIT_MILLISECOND:
|
||||
return -3;
|
||||
default:
|
||||
assert(false); /* unreachable */
|
||||
return 0;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -640,7 +640,7 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict)
|
||||
visit_type_bool(v, param, &p->direct_io, &err);
|
||||
break;
|
||||
default:
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
if (err) {
|
||||
|
@ -1411,49 +1411,42 @@ int postcopy_ram_incoming_init(MigrationIncomingState *mis)
|
||||
|
||||
int postcopy_ram_incoming_cleanup(MigrationIncomingState *mis)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_ram_prepare_discard(MigrationIncomingState *mis)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_request_shared_page(struct PostCopyFD *pcfd, RAMBlock *rb,
|
||||
uint64_t client_addr, uint64_t rb_offset)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_ram_incoming_setup(MigrationIncomingState *mis)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from,
|
||||
RAMBlock *rb)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_place_page_zero(MigrationIncomingState *mis, void *host,
|
||||
RAMBlock *rb)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int postcopy_wake_shared(struct PostCopyFD *pcfd,
|
||||
uint64_t client_addr,
|
||||
RAMBlock *rb)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1765,19 +1765,17 @@ bool ram_write_tracking_available(void)
|
||||
|
||||
bool ram_write_tracking_compatible(void)
|
||||
{
|
||||
assert(0);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
int ram_write_tracking_start(void)
|
||||
{
|
||||
assert(0);
|
||||
return -1;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
void ram_write_tracking_stop(void)
|
||||
{
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#endif /* defined(__linux__) */
|
||||
|
||||
|
@ -118,7 +118,7 @@ QObject *qobject_from_qlit(const QLitObject *qlit)
|
||||
case QTYPE_QBOOL:
|
||||
return QOBJECT(qbool_from_bool(qlit->value.qbool));
|
||||
default:
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -85,8 +85,7 @@ bool qnum_get_try_int(const QNum *qn, int64_t *val)
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -123,8 +122,7 @@ bool qnum_get_try_uint(const QNum *qn, uint64_t *val)
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return false;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -156,8 +154,7 @@ double qnum_get_double(QNum *qn)
|
||||
return qn->u.dbl;
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return 0.0;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
char *qnum_to_string(QNum *qn)
|
||||
@ -172,8 +169,7 @@ char *qnum_to_string(QNum *qn)
|
||||
return g_strdup_printf("%.17g", qn->u.dbl);
|
||||
}
|
||||
|
||||
assert(0);
|
||||
return NULL;
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2079,7 +2079,6 @@ const char *object_get_canonical_path_component(const Object *obj)
|
||||
|
||||
/* obj had a parent but was not a child, should never happen */
|
||||
g_assert_not_reached();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *object_get_canonical_path(const Object *obj)
|
||||
|
@ -3102,6 +3102,10 @@ sub process {
|
||||
if ($line =~ /\b(g_)?assert\(0\)/) {
|
||||
ERROR("use g_assert_not_reached() instead of assert(0)\n" . $herecurr);
|
||||
}
|
||||
if ($line =~ /\b(g_)?assert\(false\)/) {
|
||||
ERROR("use g_assert_not_reached() instead of assert(false)\n" .
|
||||
$herecurr);
|
||||
}
|
||||
if ($line =~ /\bstrerrorname_np\(/) {
|
||||
ERROR("use strerror() instead of strerrorname_np()\n" . $herecurr);
|
||||
}
|
||||
|
29
scripts/ci/gitlab-ci-section
Normal file
29
scripts/ci/gitlab-ci-section
Normal file
@ -0,0 +1,29 @@
|
||||
# Copyright (c) 2024 Linaro Ltd
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# gitlab-ci-section: This is a shell script fragment which defines
|
||||
# functions section_start and section_end which will emit marker lines
|
||||
# that GitLab will interpret as the beginning or end of a "collapsible
|
||||
# section" in a CI job log. See
|
||||
# https://docs.gitlab.com/ee/ci/yaml/script.html#expand-and-collapse-job-log-sections
|
||||
#
|
||||
# This is intended to be sourced in the before_script section of
|
||||
# a CI config; the section_start and section_end functions will
|
||||
# then be available for use in the before_script and script sections.
|
||||
|
||||
# Section names are [-_.A-Za-z0-9] and the section_start pairs with
|
||||
# a section_end with the same section name.
|
||||
# The description can be any printable text without newlines; this is
|
||||
# what will appear in the log.
|
||||
|
||||
# Usage:
|
||||
# section_start section_name "Description of the section"
|
||||
section_start () {
|
||||
printf "section_start:%s:%s\r\e[0K%s\n" "$(date +%s)" "$1" "$2"
|
||||
}
|
||||
|
||||
# Usage:
|
||||
# section_end section_name
|
||||
section_end () {
|
||||
printf "section_end:%s:%s\r\e[0K\n" "$(date +%s)" "$1"
|
||||
}
|
@ -158,7 +158,6 @@ int insert_hw_watchpoint(target_ulong addr, target_ulong len, int type)
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
if (len <= 8) {
|
||||
/* we align the address and set the bits in BAS */
|
||||
|
@ -5771,7 +5771,7 @@ static int kvm_handle_rdmsr(X86CPU *cpu, struct kvm_run *run)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static int kvm_handle_wrmsr(X86CPU *cpu, struct kvm_run *run)
|
||||
@ -5790,7 +5790,7 @@ static int kvm_handle_wrmsr(X86CPU *cpu, struct kvm_run *run)
|
||||
}
|
||||
}
|
||||
|
||||
assert(false);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
static bool has_sgx_provisioning;
|
||||
|
@ -249,7 +249,7 @@ static void dfp_set_FPRF_from_FRT_with_context(struct PPC_DFP *dfp,
|
||||
fprf = 0x05;
|
||||
break;
|
||||
default:
|
||||
assert(0); /* should never get here */
|
||||
g_assert_not_reached();
|
||||
}
|
||||
dfp->env->fpscr &= ~FP_FPRF;
|
||||
dfp->env->fpscr |= (fprf << FPSCR_FPRF);
|
||||
@ -1243,7 +1243,7 @@ void helper_##op(CPUPPCState *env, ppc_fprp_t *t, ppc_fprp_t *b) \
|
||||
} else if (decNumberIsQNaN(&dfp.b)) { \
|
||||
vt.VsrD(1) = -2; \
|
||||
} else { \
|
||||
assert(0); \
|
||||
g_assert_not_reached(); \
|
||||
} \
|
||||
set_dfp64(t, &vt); \
|
||||
} else { \
|
||||
@ -1252,7 +1252,7 @@ void helper_##op(CPUPPCState *env, ppc_fprp_t *t, ppc_fprp_t *b) \
|
||||
} else if ((size) == 128) { \
|
||||
vt.VsrD(1) = dfp.b.exponent + 6176; \
|
||||
} else { \
|
||||
assert(0); \
|
||||
g_assert_not_reached(); \
|
||||
} \
|
||||
set_dfp64(t, &vt); \
|
||||
} \
|
||||
@ -1300,7 +1300,7 @@ void helper_##op(CPUPPCState *env, ppc_fprp_t *t, ppc_fprp_t *a, \
|
||||
raw_inf = 0x1e000; \
|
||||
bias = 6176; \
|
||||
} else { \
|
||||
assert(0); \
|
||||
g_assert_not_reached(); \
|
||||
} \
|
||||
\
|
||||
if (unlikely((exp < 0) || (exp > max_exp))) { \
|
||||
|
@ -316,7 +316,7 @@ void ppc_tlb_invalidate_one(CPUPPCState *env, target_ulong addr)
|
||||
break;
|
||||
default:
|
||||
/* Should never reach here with other MMU models */
|
||||
assert(0);
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#else
|
||||
ppc_tlb_invalidate_all(env);
|
||||
|
@ -3172,7 +3172,6 @@ static void load_element(TCGv_i64 dest, TCGv_ptr base,
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3257,7 +3256,6 @@ static void store_element(TCGv_i64 val, TCGv_ptr base,
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -184,7 +184,6 @@ static void mem_info_svxx(Monitor *mon, CPUArchState *env)
|
||||
break;
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
/* calculate virtual address bits */
|
||||
|
@ -650,7 +650,6 @@ static int tcg_out_setcond_int(TCGContext *s, TCGCond cond, TCGReg ret,
|
||||
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
return ret | flags;
|
||||
|
@ -882,26 +882,6 @@ class BootLinuxConsole(LinuxKernelTest):
|
||||
# Wait for user-space
|
||||
wait_for_console_pattern(self, 'Starting root file system check')
|
||||
|
||||
def do_test_advcal_2018(self, day, tar_hash, kernel_name, console=0):
|
||||
tar_url = ('https://qemu-advcal.gitlab.io'
|
||||
'/qac-best-of-multiarch/download/day' + day + '.tar.xz')
|
||||
file_path = self.fetch_asset(tar_url, asset_hash=tar_hash)
|
||||
archive.extract(file_path, self.workdir)
|
||||
self.vm.set_console(console_index=console)
|
||||
self.vm.add_args('-kernel',
|
||||
self.workdir + '/day' + day + '/' + kernel_name)
|
||||
self.vm.launch()
|
||||
self.wait_for_console_pattern('QEMU advent calendar')
|
||||
|
||||
def test_arm_vexpressa9(self):
|
||||
"""
|
||||
:avocado: tags=arch:arm
|
||||
:avocado: tags=machine:vexpress-a9
|
||||
"""
|
||||
tar_hash = '32b7677ce8b6f1471fb0059865f451169934245b'
|
||||
self.vm.add_args('-dtb', self.workdir + '/day16/vexpress-v2p-ca9.dtb')
|
||||
self.do_test_advcal_2018('16', tar_hash, 'winter.zImage')
|
||||
|
||||
def test_arm_ast2600_debian(self):
|
||||
"""
|
||||
:avocado: tags=arch:arm
|
||||
@ -927,121 +907,3 @@ class BootLinuxConsole(LinuxKernelTest):
|
||||
self.wait_for_console_pattern("SMP: Total of 2 processors activated")
|
||||
self.wait_for_console_pattern("No filesystem could mount root")
|
||||
|
||||
def test_ppc64_e500(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:ppce500
|
||||
:avocado: tags=cpu:e5500
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
self.require_accelerator("tcg")
|
||||
tar_hash = '6951d86d644b302898da2fd701739c9406527fe1'
|
||||
self.do_test_advcal_2018('19', tar_hash, 'uImage')
|
||||
|
||||
def do_test_ppc64_powernv(self, proc):
|
||||
self.require_accelerator("tcg")
|
||||
images_url = ('https://github.com/open-power/op-build/releases/download/v2.7/')
|
||||
|
||||
kernel_url = images_url + 'zImage.epapr'
|
||||
kernel_hash = '0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd'
|
||||
kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash,
|
||||
algorithm='sha256')
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', kernel_path,
|
||||
'-append', 'console=tty0 console=hvc0',
|
||||
'-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
|
||||
'-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
|
||||
'-device', 'e1000e,bus=bridge1,addr=0x3',
|
||||
'-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
|
||||
self.vm.launch()
|
||||
|
||||
self.wait_for_console_pattern("CPU: " + proc + " generation processor")
|
||||
self.wait_for_console_pattern("zImage starting: loaded")
|
||||
self.wait_for_console_pattern("Run /init as init process")
|
||||
# Device detection output driven by udev probing is sometimes cut off
|
||||
# from console output, suspect S14silence-console init script.
|
||||
|
||||
def test_ppc_powernv8(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:powernv8
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
self.do_test_ppc64_powernv('P8')
|
||||
|
||||
def test_ppc_powernv9(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:powernv9
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
self.do_test_ppc64_powernv('P9')
|
||||
|
||||
def test_ppc_powernv10(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc64
|
||||
:avocado: tags=machine:powernv10
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
self.do_test_ppc64_powernv('P10')
|
||||
|
||||
def test_ppc_g3beige(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc
|
||||
:avocado: tags=machine:g3beige
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
# TODO: g3beige works with kvm_pr but we don't have a
|
||||
# reliable way ATM (e.g. looking at /proc/modules) to detect
|
||||
# whether we're running kvm_hv or kvm_pr. For now let's
|
||||
# disable this test if we don't have TCG support.
|
||||
self.require_accelerator("tcg")
|
||||
tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc'
|
||||
self.vm.add_args('-M', 'graphics=off')
|
||||
self.do_test_advcal_2018('15', tar_hash, 'invaders.elf')
|
||||
|
||||
def test_ppc_mac99(self):
|
||||
"""
|
||||
:avocado: tags=arch:ppc
|
||||
:avocado: tags=machine:mac99
|
||||
:avocado: tags=accel:tcg
|
||||
"""
|
||||
# TODO: mac99 works with kvm_pr but we don't have a
|
||||
# reliable way ATM (e.g. looking at /proc/modules) to detect
|
||||
# whether we're running kvm_hv or kvm_pr. For now let's
|
||||
# disable this test if we don't have TCG support.
|
||||
self.require_accelerator("tcg")
|
||||
tar_hash = 'e0b872a5eb8fdc5bed19bd43ffe863900ebcedfc'
|
||||
self.vm.add_args('-M', 'graphics=off')
|
||||
self.do_test_advcal_2018('15', tar_hash, 'invaders.elf')
|
||||
|
||||
# This test has a 6-10% failure rate on various hosts that look
|
||||
# like issues with a buggy kernel. As a result we don't want it
|
||||
# gating releases on Gitlab.
|
||||
@skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable on GitLab')
|
||||
def test_sh4_r2d(self):
|
||||
"""
|
||||
:avocado: tags=arch:sh4
|
||||
:avocado: tags=machine:r2d
|
||||
:avocado: tags=flaky
|
||||
"""
|
||||
tar_hash = 'fe06a4fd8ccbf2e27928d64472939d47829d4c7e'
|
||||
self.vm.add_args('-append', 'console=ttySC1')
|
||||
self.do_test_advcal_2018('09', tar_hash, 'zImage', console=1)
|
||||
|
||||
def test_sparc_ss20(self):
|
||||
"""
|
||||
:avocado: tags=arch:sparc
|
||||
:avocado: tags=machine:SS-20
|
||||
"""
|
||||
tar_hash = 'b18550d5d61c7615d989a06edace051017726a9f'
|
||||
self.do_test_advcal_2018('11', tar_hash, 'zImage.elf')
|
||||
|
||||
def test_xtensa_lx60(self):
|
||||
"""
|
||||
:avocado: tags=arch:xtensa
|
||||
:avocado: tags=machine:lx60
|
||||
:avocado: tags=cpu:dc233c
|
||||
"""
|
||||
tar_hash = '49e88d9933742f0164b60839886c9739cb7a0d34'
|
||||
self.do_test_advcal_2018('02', tar_hash, 'santas-sleigh-ride.elf')
|
||||
|
@ -50,6 +50,7 @@ tests_arm_system_thorough = [
|
||||
'arm_canona1100',
|
||||
'arm_integratorcp',
|
||||
'arm_raspi2',
|
||||
'arm_vexpress',
|
||||
]
|
||||
|
||||
tests_arm_linuxuser_thorough = [
|
||||
@ -105,11 +106,13 @@ tests_ppc_system_thorough = [
|
||||
'ppc_40p',
|
||||
'ppc_amiga',
|
||||
'ppc_bamboo',
|
||||
'ppc_mac',
|
||||
'ppc_mpc8544ds',
|
||||
'ppc_virtex_ml507',
|
||||
]
|
||||
|
||||
tests_ppc64_system_thorough = [
|
||||
'ppc64_e500',
|
||||
'ppc64_hv',
|
||||
'ppc64_powernv',
|
||||
'ppc64_pseries',
|
||||
@ -124,6 +127,14 @@ tests_s390x_system_thorough = [
|
||||
's390x_topology',
|
||||
]
|
||||
|
||||
tests_sh4_system_thorough = [
|
||||
'sh4_r2d',
|
||||
]
|
||||
|
||||
tests_sparc_system_thorough = [
|
||||
'sparc_sun4m',
|
||||
]
|
||||
|
||||
tests_sparc64_system_thorough = [
|
||||
'sparc64_sun4u',
|
||||
]
|
||||
@ -144,6 +155,10 @@ tests_x86_64_system_thorough = [
|
||||
'virtio_gpu',
|
||||
]
|
||||
|
||||
tests_xtensa_system_thorough = [
|
||||
'xtensa_lx60',
|
||||
]
|
||||
|
||||
precache_all = []
|
||||
foreach speed : ['quick', 'thorough']
|
||||
foreach dir : target_dirs
|
||||
|
@ -17,6 +17,18 @@ class LinuxKernelTest(QemuSystemTest):
|
||||
failure_message='Kernel panic - not syncing',
|
||||
vm=vm)
|
||||
|
||||
def launch_kernel(self, kernel, initrd=None, dtb=None, console_index=0,
|
||||
wait_for=None):
|
||||
self.vm.set_console(console_index=console_index)
|
||||
self.vm.add_args('-kernel', kernel)
|
||||
if initrd:
|
||||
self.vm.add_args('-initrd', initrd)
|
||||
if dtb:
|
||||
self.vm.add_args('-dtb', dtb)
|
||||
self.vm.launch()
|
||||
if wait_for:
|
||||
self.wait_for_console_pattern(wait_for)
|
||||
|
||||
def extract_from_deb(self, deb_path, path):
|
||||
"""
|
||||
Extracts a file from a deb package into the test workdir
|
||||
|
26
tests/functional/test_arm_vexpress.py
Executable file
26
tests/functional/test_arm_vexpress.py
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Functional test that boots a Linux kernel on an versatile express machine
|
||||
# and checks the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
class VExpressTest(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY16 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day16.tar.xz',
|
||||
'63311adb2d4c4e7a73214a86d29988add87266a909719c56acfadd026b4110a7')
|
||||
|
||||
def test_arm_vexpressa9(self):
|
||||
self.set_machine('vexpress-a9')
|
||||
file_path = self.ASSET_DAY16.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day16/winter.zImage',
|
||||
dtb=self.workdir + '/day16/vexpress-v2p-ca9.dtb',
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
25
tests/functional/test_ppc64_e500.py
Executable file
25
tests/functional/test_ppc64_e500.py
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Boot a Linux kernel on a e500 ppc64 machine and check the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
class E500Test(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY19 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day19.tar.xz',
|
||||
'20b1bb5a8488c664defbb5d283addc91a05335a936c63b3f5ff7eee74b725755')
|
||||
|
||||
def test_ppc64_e500(self):
|
||||
self.set_machine('ppce500')
|
||||
self.cpu = 'e5500'
|
||||
file_path = self.ASSET_DAY19.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day19/uImage',
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
@ -7,10 +7,10 @@
|
||||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||
# later. See the COPYING file in the top-level directory.
|
||||
|
||||
from qemu_test import QemuSystemTest, Asset
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test import wait_for_console_pattern
|
||||
|
||||
class powernvMachine(QemuSystemTest):
|
||||
class powernvMachine(LinuxKernelTest):
|
||||
|
||||
timeout = 90
|
||||
KERNEL_COMMON_COMMAND_LINE = 'printk.time=0 console=hvc0 '
|
||||
@ -78,5 +78,41 @@ class powernvMachine(QemuSystemTest):
|
||||
wait_for_console_pattern(self, console_pattern, self.panic_message)
|
||||
wait_for_console_pattern(self, self.good_message, self.panic_message)
|
||||
|
||||
|
||||
ASSET_EPAPR_KERNEL = Asset(
|
||||
('https://github.com/open-power/op-build/releases/download/v2.7/'
|
||||
'zImage.epapr'),
|
||||
'0ab237df661727e5392cee97460e8674057a883c5f74381a128fa772588d45cd')
|
||||
|
||||
def do_test_ppc64_powernv(self, proc):
|
||||
self.require_accelerator("tcg")
|
||||
kernel_path = self.ASSET_EPAPR_KERNEL.fetch()
|
||||
self.vm.set_console()
|
||||
self.vm.add_args('-kernel', kernel_path,
|
||||
'-append', 'console=tty0 console=hvc0',
|
||||
'-device', 'pcie-pci-bridge,id=bridge1,bus=pcie.1,addr=0x0',
|
||||
'-device', 'nvme,bus=pcie.2,addr=0x0,serial=1234',
|
||||
'-device', 'e1000e,bus=bridge1,addr=0x3',
|
||||
'-device', 'nec-usb-xhci,bus=bridge1,addr=0x2')
|
||||
self.vm.launch()
|
||||
|
||||
self.wait_for_console_pattern("CPU: " + proc + " generation processor")
|
||||
self.wait_for_console_pattern("zImage starting: loaded")
|
||||
self.wait_for_console_pattern("Run /init as init process")
|
||||
# Device detection output driven by udev probing is sometimes cut off
|
||||
# from console output, suspect S14silence-console init script.
|
||||
|
||||
def test_powernv8(self):
|
||||
self.set_machine('powernv8')
|
||||
self.do_test_ppc64_powernv('P8')
|
||||
|
||||
def test_powernv9(self):
|
||||
self.set_machine('powernv9')
|
||||
self.do_test_ppc64_powernv('P9')
|
||||
|
||||
def test_powernv10(self):
|
||||
self.set_machine('powernv10')
|
||||
self.do_test_ppc64_powernv('P10')
|
||||
|
||||
if __name__ == '__main__':
|
||||
QemuSystemTest.main()
|
||||
LinuxKernelTest.main()
|
||||
|
38
tests/functional/test_ppc_mac.py
Executable file
38
tests/functional/test_ppc_mac.py
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Boot Linux kernel on a mac99 and g3beige ppc machine and check the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
class MacTest(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY15 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day15.tar.xz',
|
||||
'03e0757c131d2959decf293a3572d3b96c5a53587165bf05ce41b2818a2bccd5')
|
||||
|
||||
def do_day15_test(self):
|
||||
# mac99 also works with kvm_pr but we don't have a reliable way at
|
||||
# the moment (e.g. by looking at /proc/modules) to detect whether
|
||||
# we're running kvm_hv or kvm_pr. For now let's disable this test
|
||||
# if we don't have TCG support.
|
||||
self.require_accelerator("tcg")
|
||||
|
||||
file_path = self.ASSET_DAY15.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.add_args('-M', 'graphics=off')
|
||||
self.launch_kernel(self.workdir + '/day15/invaders.elf',
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
def test_ppc_g3beige(self):
|
||||
self.set_machine('g3beige')
|
||||
self.do_day15_test()
|
||||
|
||||
def test_ppc_mac99(self):
|
||||
self.set_machine('mac99')
|
||||
self.do_day15_test()
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
31
tests/functional/test_sh4_r2d.py
Executable file
31
tests/functional/test_sh4_r2d.py
Executable file
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Boot a Linux kernel on a r2d sh4 machine and check the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
import os
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
from unittest import skipUnless
|
||||
|
||||
class R2dTest(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY09 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day09.tar.xz',
|
||||
'a61b44d2630a739d1380cc4ff4b80981d47ccfd5992f1484ccf48322c35f09ac')
|
||||
|
||||
# This test has a 6-10% failure rate on various hosts that look
|
||||
# like issues with a buggy kernel.
|
||||
@skipUnless(os.getenv('QEMU_TEST_FLAKY_TESTS'), 'Test is unstable')
|
||||
def test_r2d(self):
|
||||
self.set_machine('r2d')
|
||||
file_path = self.ASSET_DAY09.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.vm.add_args('-append', 'console=ttySC1')
|
||||
self.launch_kernel(self.workdir + '/day09/zImage', console_index=1,
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
25
tests/functional/test_sparc_sun4m.py
Executable file
25
tests/functional/test_sparc_sun4m.py
Executable file
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Functional test that boots a Linux kernel on a sparc sun4m machine
|
||||
# and checks the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
class Sun4mTest(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY11 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day11.tar.xz',
|
||||
'c776533ba756bf4dd3f1fc4c024fb50ef0d853e05c5f5ddf0900a32d1eaa49e0')
|
||||
|
||||
def test_sparc_ss20(self):
|
||||
self.set_machine('SS-20')
|
||||
file_path = self.ASSET_DAY11.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day11/zImage.elf',
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
26
tests/functional/test_xtensa_lx60.py
Executable file
26
tests/functional/test_xtensa_lx60.py
Executable file
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Functional test that boots a Linux kernel on an xtensa lx650 machine
|
||||
# and checks the console
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
from qemu_test import LinuxKernelTest, Asset
|
||||
from qemu_test.utils import archive_extract
|
||||
|
||||
class XTensaLX60Test(LinuxKernelTest):
|
||||
|
||||
ASSET_DAY02 = Asset(
|
||||
'https://www.qemu-advent-calendar.org/2018/download/day02.tar.xz',
|
||||
'68ff07f9b3fd3df36d015eb46299ba44748e94bfbb2d5295fddc1a8d4a9fd324')
|
||||
|
||||
def test_xtensa_lx60(self):
|
||||
self.set_machine('lx60')
|
||||
self.cpu = 'dc233c'
|
||||
file_path = self.ASSET_DAY02.fetch()
|
||||
archive_extract(file_path, self.workdir)
|
||||
self.launch_kernel(self.workdir + '/day02/santas-sleigh-ride.elf',
|
||||
wait_for='QEMU advent calendar')
|
||||
|
||||
if __name__ == '__main__':
|
||||
LinuxKernelTest.main()
|
@ -156,5 +156,4 @@ uint64_t acpi_find_rsdp_address_uefi(QTestState *qts, uint64_t start,
|
||||
g_usleep(TEST_DELAY);
|
||||
}
|
||||
g_assert_not_reached();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user