From d822b883d7c5e0bbee4fa5ea1c14546e5ce16019 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:28 +0200 Subject: [PATCH 01/17] tests/qtest/cdrom-test: Improve the machine detection in the cdrom test When configuring QEMU with the --without-default-devices switch, these tests are currently failing since they assume that the "pc" and "q35" machines are always available. Add some proper checks to make the test work without these machines, too. Message-ID: <20240905191434.694440-3-thuth@redhat.com> Signed-off-by: Thomas Huth --- tests/qtest/cdrom-test.c | 77 ++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/tests/qtest/cdrom-test.c b/tests/qtest/cdrom-test.c index 5d89e62515..9d72b24e4b 100644 --- a/tests/qtest/cdrom-test.c +++ b/tests/qtest/cdrom-test.c @@ -135,13 +135,35 @@ static void add_x86_tests(void) return; } - qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot); - if (qtest_has_device("virtio-scsi-ccw")) { - qtest_add_data_func("cdrom/boot/virtio-scsi", - "-device virtio-scsi -device scsi-cd,drive=cdr " - "-blockdev file,node-name=cdr,filename=", - test_cdboot); + if (qtest_has_machine("pc")) { + qtest_add_data_func("cdrom/boot/default", "-cdrom ", test_cdboot); + if (qtest_has_device("virtio-scsi-ccw")) { + qtest_add_data_func("cdrom/boot/virtio-scsi", + "-device virtio-scsi -device scsi-cd,drive=cdr " + "-blockdev file,node-name=cdr,filename=", + test_cdboot); + } + + if (qtest_has_device("am53c974")) { + qtest_add_data_func("cdrom/boot/am53c974", + "-device am53c974 -device scsi-cd,drive=cd1 " + "-drive if=none,id=cd1,format=raw,file=", + test_cdboot); + } + if (qtest_has_device("dc390")) { + qtest_add_data_func("cdrom/boot/dc390", + "-device dc390 -device scsi-cd,drive=cd1 " + "-blockdev file,node-name=cd1,filename=", + test_cdboot); + } + if (qtest_has_device("lsi53c895a")) { + qtest_add_data_func("cdrom/boot/lsi53c895a", + "-device lsi53c895a -device scsi-cd,drive=cd1 " + "-blockdev file,node-name=cd1,filename=", + test_cdboot); + } } + /* * Unstable CI test under load * See https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg05509.html @@ -150,35 +172,20 @@ static void add_x86_tests(void) qtest_add_data_func("cdrom/boot/isapc", "-M isapc " "-drive if=ide,media=cdrom,file=", test_cdboot); } - if (qtest_has_device("am53c974")) { - qtest_add_data_func("cdrom/boot/am53c974", - "-device am53c974 -device scsi-cd,drive=cd1 " - "-drive if=none,id=cd1,format=raw,file=", - test_cdboot); - } - if (qtest_has_device("dc390")) { - qtest_add_data_func("cdrom/boot/dc390", - "-device dc390 -device scsi-cd,drive=cd1 " - "-blockdev file,node-name=cd1,filename=", - test_cdboot); - } - if (qtest_has_device("lsi53c895a")) { - qtest_add_data_func("cdrom/boot/lsi53c895a", - "-device lsi53c895a -device scsi-cd,drive=cd1 " - "-blockdev file,node-name=cd1,filename=", - test_cdboot); - } - if (qtest_has_device("megasas")) { - qtest_add_data_func("cdrom/boot/megasas", "-M q35 " - "-device megasas -device scsi-cd,drive=cd1 " - "-blockdev file,node-name=cd1,filename=", - test_cdboot); - } - if (qtest_has_device("megasas-gen2")) { - qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 " - "-device megasas-gen2 -device scsi-cd,drive=cd1 " - "-blockdev file,node-name=cd1,filename=", - test_cdboot); + + if (qtest_has_machine("q35")) { + if (qtest_has_device("megasas")) { + qtest_add_data_func("cdrom/boot/megasas", "-M q35 " + "-device megasas -device scsi-cd,drive=cd1 " + "-blockdev file,node-name=cd1,filename=", + test_cdboot); + } + if (qtest_has_device("megasas-gen2")) { + qtest_add_data_func("cdrom/boot/megasas-gen2", "-M q35 " + "-device megasas-gen2 -device scsi-cd,drive=cd1 " + "-blockdev file,node-name=cd1,filename=", + test_cdboot); + } } } From 0a8ecb41fd9a9fb67c1cc63a0e1eab3e940c6a35 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:29 +0200 Subject: [PATCH 02/17] tests/qtest/boot-order-test: Make the machine name mandatory in this test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Let's make sure that we always pass a machine name to the test_boot_orders() function, so we can check whether the machine is available in the binary and skip the test in case it is not included in the build. Message-ID: <20240905191434.694440-4-thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Thomas Huth --- tests/qtest/boot-order-test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/qtest/boot-order-test.c b/tests/qtest/boot-order-test.c index 8f2b6ef05a..c67b8cfe16 100644 --- a/tests/qtest/boot-order-test.c +++ b/tests/qtest/boot-order-test.c @@ -31,7 +31,7 @@ static void test_a_boot_order(const char *machine, uint64_t actual; QTestState *qts; - if (machine && !qtest_has_machine(machine)) { + if (!qtest_has_machine(machine)) { g_test_skip("Machine is not available"); return; } @@ -107,7 +107,7 @@ static const boot_order_test test_cases_pc[] = { static void test_pc_boot_order(void) { - test_boot_orders(NULL, read_boot_order_pc, test_cases_pc); + test_boot_orders("pc", read_boot_order_pc, test_cases_pc); } static uint64_t read_boot_order_pmac(QTestState *qts) From d98894d8451f31628906cdbd1a47e8b17dfc2397 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:30 +0200 Subject: [PATCH 03/17] tests/qtest/hd-geo-test: Check for availability of "pc" machine before using it In case QEMU has been configured with "--without-default-devices", the "pc" machine type might be missing in the binary. We should check for its availability before using it. Message-ID: <20240905191434.694440-5-thuth@redhat.com> Signed-off-by: Thomas Huth --- tests/qtest/hd-geo-test.c | 71 +++++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/tests/qtest/hd-geo-test.c b/tests/qtest/hd-geo-test.c index d08bffad91..85eb8d7668 100644 --- a/tests/qtest/hd-geo-test.c +++ b/tests/qtest/hd-geo-test.c @@ -1074,17 +1074,26 @@ int main(int argc, char **argv) } } - qtest_add_func("hd-geo/ide/none", test_ide_none); - qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); - qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); - qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); - qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); - qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); - qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); - qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); - qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); - qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); - if (have_qemu_img()) { + if (qtest_has_machine("pc")) { + qtest_add_func("hd-geo/ide/none", test_ide_none); + qtest_add_func("hd-geo/ide/drive/mbr/blank", test_ide_drive_mbr_blank); + qtest_add_func("hd-geo/ide/drive/mbr/lba", test_ide_drive_mbr_lba); + qtest_add_func("hd-geo/ide/drive/mbr/chs", test_ide_drive_mbr_chs); + qtest_add_func("hd-geo/ide/drive/cd_0", test_ide_drive_cd_0); + qtest_add_func("hd-geo/ide/device/mbr/blank", test_ide_device_mbr_blank); + qtest_add_func("hd-geo/ide/device/mbr/lba", test_ide_device_mbr_lba); + qtest_add_func("hd-geo/ide/device/mbr/chs", test_ide_device_mbr_chs); + qtest_add_func("hd-geo/ide/device/user/chs", test_ide_device_user_chs); + qtest_add_func("hd-geo/ide/device/user/chst", test_ide_device_user_chst); + } + + if (!have_qemu_img()) { + g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; " + "skipping hd-geo/override/* tests"); + goto test_add_done; + } + + if (qtest_has_machine("pc")) { qtest_add_func("hd-geo/override/ide", test_override_ide); if (qtest_has_device("lsi53c895a")) { qtest_add_func("hd-geo/override/scsi", test_override_scsi); @@ -1104,30 +1113,26 @@ int main(int argc, char **argv) qtest_add_func("hd-geo/override/virtio_blk", test_override_virtio_blk); } + } - if (qtest_has_machine("q35")) { - qtest_add_func("hd-geo/override/sata", test_override_sata); - qtest_add_func("hd-geo/override/zero_chs_q35", - test_override_zero_chs_q35); - if (qtest_has_device("lsi53c895a")) { - qtest_add_func("hd-geo/override/scsi_q35", - test_override_scsi_q35); - } - if (qtest_has_device("virtio-scsi-pci")) { - qtest_add_func("hd-geo/override/scsi_hot_unplug_q35", - test_override_scsi_hot_unplug_q35); - } - if (qtest_has_device("virtio-blk-pci")) { - qtest_add_func("hd-geo/override/virtio_hot_unplug_q35", - test_override_virtio_hot_unplug_q35); - qtest_add_func("hd-geo/override/virtio_blk_q35", - test_override_virtio_blk_q35); - } - + if (qtest_has_machine("q35")) { + qtest_add_func("hd-geo/override/sata", test_override_sata); + qtest_add_func("hd-geo/override/zero_chs_q35", + test_override_zero_chs_q35); + if (qtest_has_device("lsi53c895a")) { + qtest_add_func("hd-geo/override/scsi_q35", + test_override_scsi_q35); + } + if (qtest_has_device("virtio-scsi-pci")) { + qtest_add_func("hd-geo/override/scsi_hot_unplug_q35", + test_override_scsi_hot_unplug_q35); + } + if (qtest_has_device("virtio-blk-pci")) { + qtest_add_func("hd-geo/override/virtio_hot_unplug_q35", + test_override_virtio_hot_unplug_q35); + qtest_add_func("hd-geo/override/virtio_blk_q35", + test_override_virtio_blk_q35); } - } else { - g_test_message("QTEST_QEMU_IMG not set or qemu-img missing; " - "skipping hd-geo/override/* tests"); } test_add_done: From f69880a0e945ae067dfec63a3d0770179b218c0c Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:31 +0200 Subject: [PATCH 04/17] tests/qtest/meson.build: Add more CONFIG switches checks for the x86 tests When configuring QEMU with "--without-default-devices", currently a lot of the x86 qtests are failing since they silently assume that a certain device or the i440fx pc machine is available. Add more checks for CONFIG switches here to not run those tests in case the corresponding device is not available. Message-ID: <20240905191434.694440-6-thuth@redhat.com> Signed-off-by: Thomas Huth --- tests/qtest/meson.build | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index fc852f3d8b..ce0dba18cb 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -50,7 +50,15 @@ qtests_filter = \ qtests_i386 = \ (slirp.found() ? ['pxe-test'] : []) + \ qtests_filter + \ - (have_tools ? ['ahci-test'] : []) + \ + (config_all_devices.has_key('CONFIG_ACPI_VMGENID') ? ['vmgenid-test'] : []) + \ + (config_all_devices.has_key('CONFIG_AHCI_ICH9') and have_tools ? ['ahci-test'] : []) + \ + (config_all_devices.has_key('CONFIG_AHCI_ICH9') ? ['tco-test'] : []) + \ + (config_all_devices.has_key('CONFIG_FDC_ISA') ? ['fdc-test'] : []) + \ + (config_all_devices.has_key('CONFIG_I440FX') ? ['fw_cfg-test'] : []) + \ + (config_all_devices.has_key('CONFIG_I440FX') ? ['i440fx-test'] : []) + \ + (config_all_devices.has_key('CONFIG_I440FX') ? ['ide-test'] : []) + \ + (config_all_devices.has_key('CONFIG_I440FX') ? ['numa-test'] : []) + \ + (config_all_devices.has_key('CONFIG_I440FX') ? ['test-x86-cpuid-compat'] : []) + \ (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) + \ (config_all_devices.has_key('CONFIG_SGA') ? ['boot-serial-test'] : []) + \ (config_all_devices.has_key('CONFIG_ISA_IPMI_KCS') ? ['ipmi-kcs-test'] : []) + \ @@ -64,6 +72,7 @@ qtests_i386 = \ (config_all_devices.has_key('CONFIG_I82801B11') ? ['i82801b11-test'] : []) + \ (config_all_devices.has_key('CONFIG_IOH3420') ? ['ioh3420-test'] : []) + \ (config_all_devices.has_key('CONFIG_LPC_ICH9') ? ['lpc-ich9-test'] : []) + \ + (config_all_devices.has_key('CONFIG_MC146818RTC') ? ['rtc-test'] : []) + \ (config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \ (config_all_devices.has_key('CONFIG_USB_UHCI') and \ config_all_devices.has_key('CONFIG_USB_EHCI') ? ['usb-hcd-ehci-test'] : []) + \ @@ -77,6 +86,7 @@ qtests_i386 = \ (config_all_devices.has_key('CONFIG_MEGASAS_SCSI_PCI') ? ['fuzz-megasas-test'] : []) + \ (config_all_devices.has_key('CONFIG_LSI_SCSI_PCI') ? ['fuzz-lsi53c895a-test'] : []) + \ (config_all_devices.has_key('CONFIG_VIRTIO_SCSI') ? ['fuzz-virtio-scsi-test'] : []) + \ + (config_all_devices.has_key('CONFIG_Q35') ? ['q35-test'] : []) + \ (config_all_devices.has_key('CONFIG_SB16') ? ['fuzz-sb16-test'] : []) + \ (config_all_devices.has_key('CONFIG_SDHCI_PCI') ? ['fuzz-sdcard-test'] : []) + \ (config_all_devices.has_key('CONFIG_ESP_PCI') ? ['am53c974-test'] : []) + \ @@ -92,25 +102,16 @@ qtests_i386 = \ config_all_devices.has_key('CONFIG_PARALLEL') ? ['bios-tables-test'] : []) + \ qtests_pci + \ qtests_cxl + \ - ['fdc-test', - 'ide-test', + [ 'hd-geo-test', 'boot-order-test', - 'rtc-test', - 'i440fx-test', - 'fw_cfg-test', 'device-plug-test', 'drive_del-test', - 'tco-test', 'cpu-plug-test', - 'q35-test', - 'vmgenid-test', 'migration-test', - 'test-x86-cpuid-compat', - 'numa-test' ] -if dbus_display +if dbus_display and config_all_devices.has_key('CONFIG_VGA') qtests_i386 += ['dbus-display-test'] endif From 4bb82409d99aab7b4f192b206fbf82a0440e0186 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:32 +0200 Subject: [PATCH 05/17] tests/qtest: Disable numa-test if the default machine is not available The numa-test needs a default machine in the target binary to work successfully, so don't try to run this test if the corresponding machine has not been enabled, e.g. when QEMU has been configured with "--without-default-devices". Message-ID: <20240905191434.694440-7-thuth@redhat.com> Signed-off-by: Thomas Huth --- tests/qtest/meson.build | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index ce0dba18cb..310865e49c 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -142,7 +142,8 @@ qtests_hppa = ['boot-serial-test'] + \ (config_all_devices.has_key('CONFIG_VGA') ? ['display-vga-test'] : []) qtests_loongarch64 = qtests_filter + \ - ['boot-serial-test', 'numa-test'] + (config_all_devices.has_key('CONFIG_LOONGARCH_VIRT') ? ['numa-test'] : []) + \ + ['boot-serial-test'] qtests_m68k = ['boot-serial-test'] + \ qtests_filter @@ -175,11 +176,12 @@ qtests_ppc64 = \ (config_all_devices.has_key('CONFIG_POWERNV') ? ['pnv-xscom-test'] : []) + \ (config_all_devices.has_key('CONFIG_POWERNV') ? ['pnv-spi-seeprom-test'] : []) + \ (config_all_devices.has_key('CONFIG_POWERNV') ? ['pnv-host-i2c-test'] : []) + \ + (config_all_devices.has_key('CONFIG_PSERIES') ? ['numa-test'] : []) + \ (config_all_devices.has_key('CONFIG_PSERIES') ? ['rtas-test'] : []) + \ (slirp.found() ? ['pxe-test'] : []) + \ (config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \ (config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \ - qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test'] + qtests_pci + ['migration-test', 'cpu-plug-test', 'drive_del-test'] qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) qtests_sh4eb = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : []) From 790761c432c06e0b20d0cbf14ecf996c5c8d6842 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Thu, 5 Sep 2024 21:14:34 +0200 Subject: [PATCH 06/17] .gitlab-ci.d/buildtest: Build most targets in the build-without-defaults job Now that all the qtests are able to deal with builds that use the "--without-default-devices" configuration switch, we can add all targets to the build-without-defaults job. But to avoid burning too much CI cycles in this job, exclude some targets where we already have similar test coverage by a related target. Message-ID: <20240905191434.694440-9-thuth@redhat.com> Signed-off-by: Thomas Huth --- .gitlab-ci.d/buildtest.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index b75e4edbf6..2ab8c4806e 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -659,9 +659,6 @@ build-tci: - make check-tcg # Check our reduced build configurations -# requires libfdt: aarch64, arm, loongarch64, microblaze, microblazeel, -# or1k, ppc64, riscv32, riscv64, rx -# fails qtest without boards: i386, x86_64 build-without-defaults: extends: .native_build_job_template needs: @@ -675,11 +672,7 @@ build-without-defaults: --disable-pie --disable-qom-cast-debug --disable-strip - TARGETS: alpha-softmmu avr-softmmu hppa-softmmu m68k-softmmu - mips-softmmu mips64-softmmu mipsel-softmmu mips64el-softmmu - ppc-softmmu s390x-softmmu sh4-softmmu sh4eb-softmmu sparc-softmmu - sparc64-softmmu tricore-softmmu xtensa-softmmu xtensaeb-softmmu - hexagon-linux-user i386-linux-user s390x-linux-user + --target-list-exclude=aarch64-softmmu,microblaze-softmmu,mips64-softmmu,mipsel-softmmu,ppc64-softmmu,sh4el-softmmu,xtensa-softmmu,x86_64-softmmu MAKE_CHECK_ARGS: check build-libvhost-user: From 8d5ab746b1e6668ffb0378820b25665b385c8573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Fri, 6 Sep 2024 15:09:58 +0100 Subject: [PATCH 07/17] gitlab: fix logic for changing docker tag on stable branches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes: commit e28112d00703abd136e2411d23931f4f891c9244 Author: Daniel P. Berrangé Date: Thu Jun 8 17:40:16 2023 +0100 gitlab: stable staging branches publish containers in a separate tag Due to a copy+paste mistake, that commit included "QEMU_JOB_SKIPPED" in the final rule that was meant to be a 'catch all' for staging branches. As a result stable branches are still splattering dockers from the primary development branch. Signed-off-by: Daniel P. Berrangé Reviewed-by: Michael Tokarev Tested-by: Michael Tokarev Message-ID: <20240906140958.84755-1-berrange@redhat.com> Signed-off-by: Thomas Huth --- .gitlab-ci.d/base.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml index bf3d8efab6..25b88aaa06 100644 --- a/.gitlab-ci.d/base.yml +++ b/.gitlab-ci.d/base.yml @@ -128,7 +128,7 @@ variables: when: manual # Jobs can run if any jobs they depend on were successful - - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' + - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' when: on_success variables: QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG From 74dcb2535ddb459cec3ab0c136924e39856686c3 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 12 Sep 2024 00:38:45 -0700 Subject: [PATCH 08/17] tests/qtest: replace assert(0) with g_assert_not_reached() This patch is part of a series that moves towards a consistent use of g_assert_not_reached() rather than an ad hoc mix of different assertion mechanisms. Reviewed-by: Richard Henderson Reviewed-by: Thomas Huth Signed-off-by: Pierrick Bouvier Message-ID: <20240912073921.453203-13-pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth --- tests/qtest/ipmi-bt-test.c | 2 +- tests/qtest/ipmi-kcs-test.c | 4 ++-- tests/qtest/rtl8139-test.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/qtest/ipmi-bt-test.c b/tests/qtest/ipmi-bt-test.c index 383239bcd4..13f7c841f5 100644 --- a/tests/qtest/ipmi-bt-test.c +++ b/tests/qtest/ipmi-bt-test.c @@ -251,7 +251,7 @@ static void emu_msg_handler(void) msg[msg_len++] = 0xa0; write_emu_msg(msg, msg_len); } else { - g_assert(0); + g_assert_not_reached(); } } diff --git a/tests/qtest/ipmi-kcs-test.c b/tests/qtest/ipmi-kcs-test.c index afc24dd3e4..3186c6ad64 100644 --- a/tests/qtest/ipmi-kcs-test.c +++ b/tests/qtest/ipmi-kcs-test.c @@ -145,7 +145,7 @@ static void kcs_cmd(uint8_t *cmd, unsigned int cmd_len, break; default: - g_assert(0); + g_assert_not_reached(); } *rsp_len = j; } @@ -184,7 +184,7 @@ static void kcs_abort(uint8_t *cmd, unsigned int cmd_len, break; default: - g_assert(0); + g_assert_not_reached(); } /* Start the abort here */ diff --git a/tests/qtest/rtl8139-test.c b/tests/qtest/rtl8139-test.c index eedf90f65a..55f671f2f5 100644 --- a/tests/qtest/rtl8139-test.c +++ b/tests/qtest/rtl8139-test.c @@ -65,7 +65,7 @@ PORT(IntrMask, w, 0x3c) PORT(IntrStatus, w, 0x3E) PORT(TimerInt, l, 0x54) -#define fatal(...) do { g_test_message(__VA_ARGS__); g_assert(0); } while (0) +#define fatal(...) do { g_test_message(__VA_ARGS__); g_assert_not_reached(); } while (0) static void test_timer(void) { From 6ceefb931fac9d67dd4d8742d406fab63a3c00d1 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 12 Sep 2024 00:38:46 -0700 Subject: [PATCH 09/17] tests/unit: replace assert(0) with g_assert_not_reached() This patch is part of a series that moves towards a consistent use of g_assert_not_reached() rather than an ad hoc mix of different assertion mechanisms. Reviewed-by: Richard Henderson Signed-off-by: Pierrick Bouvier Message-ID: <20240912073921.453203-14-pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth --- tests/unit/test-xs-node.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/unit/test-xs-node.c b/tests/unit/test-xs-node.c index ac94e7ed6c..2f447a73fb 100644 --- a/tests/unit/test-xs-node.c +++ b/tests/unit/test-xs-node.c @@ -212,7 +212,7 @@ static void compare_tx(gpointer key, gpointer val, gpointer opaque) printf("Comparison failure in TX %u after serdes:\n", tx_id); dump_ref("Original", t1->root, 0); dump_ref("Deserialised", t2->root, 0); - g_assert(0); + g_assert_not_reached(); } g_assert(t1->nr_nodes == t2->nr_nodes); } @@ -257,7 +257,7 @@ static void check_serdes(XenstoreImplState *s) printf("Comparison failure in main tree after serdes:\n"); dump_ref("Original", s->root, 0); dump_ref("Deserialised", s2->root, 0); - g_assert(0); + g_assert_not_reached(); } nr_transactions1 = g_hash_table_size(s->transactions); From 446ef11261499230e0439b147a874404dfbbe786 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 12 Sep 2024 00:38:47 -0700 Subject: [PATCH 10/17] include/hw/s390x: replace assert(false) with g_assert_not_reached() This patch is part of a series that moves towards a consistent use of g_assert_not_reached() rather than an ad hoc mix of different assertion mechanisms. Reviewed-by: Richard Henderson Reviewed-by: Thomas Huth Signed-off-by: Pierrick Bouvier Reviewed-by: Eric Farman Message-ID: <20240912073921.453203-15-pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth --- include/hw/s390x/cpu-topology.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/s390x/cpu-topology.h b/include/hw/s390x/cpu-topology.h index a11b1baa77..9283c948e3 100644 --- a/include/hw/s390x/cpu-topology.h +++ b/include/hw/s390x/cpu-topology.h @@ -57,7 +57,7 @@ static inline void s390_topology_setup_cpu(MachineState *ms, static inline void s390_topology_reset(void) { /* Unreachable, CPU topology not implemented for TCG */ - assert(false); + g_assert_not_reached(); } #endif From 317e39f44646b7a8c8b10fbc85932cc7d7a92840 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 12 Sep 2024 00:38:56 -0700 Subject: [PATCH 11/17] tests/qtest: replace assert(false) with g_assert_not_reached() This patch is part of a series that moves towards a consistent use of g_assert_not_reached() rather than an ad hoc mix of different assertion mechanisms. Reviewed-by: Richard Henderson Signed-off-by: Pierrick Bouvier Message-ID: <20240912073921.453203-24-pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth --- tests/qtest/numa-test.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c index ede418963c..6d92baee86 100644 --- a/tests/qtest/numa-test.c +++ b/tests/qtest/numa-test.c @@ -162,7 +162,7 @@ static void pc_numa_cpu(const void *data) } else if (socket == 1 && core == 1 && thread == 1) { g_assert_cmpint(node, ==, 1); } else { - g_assert(false); + g_assert_not_reached(); } qobject_unref(e); } @@ -207,7 +207,7 @@ static void spapr_numa_cpu(const void *data) } else if (core == 3) { g_assert_cmpint(node, ==, 1); } else { - g_assert(false); + g_assert_not_reached(); } qobject_unref(e); } @@ -257,7 +257,7 @@ static void aarch64_numa_cpu(const void *data) } else if (socket == 1 && cluster == 0 && core == 0 && thread == 0) { g_assert_cmpint(node, ==, 0); } else { - g_assert(false); + g_assert_not_reached(); } qobject_unref(e); } @@ -305,7 +305,7 @@ static void loongarch64_numa_cpu(const void *data) } else if (socket == 1 && core == 0 && thread == 0) { g_assert_cmpint(node, ==, 0); } else { - g_assert(false); + g_assert_not_reached(); } qobject_unref(e); } @@ -367,7 +367,7 @@ static void pc_dynamic_cpu_cfg(const void *data) } else if (socket == 1) { g_assert_cmpint(node, ==, 0); } else { - g_assert(false); + g_assert_not_reached(); } qobject_unref(e); } From 70dc9c8ab51c29ddeaaffce715776b4242fe15d3 Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Thu, 12 Sep 2024 00:39:08 -0700 Subject: [PATCH 12/17] tests/qtest: remove break after g_assert_not_reached() This patch is part of a series that moves towards a consistent use of g_assert_not_reached() rather than an ad hoc mix of different assertion mechanisms. Reviewed-by: Richard Henderson Signed-off-by: Pierrick Bouvier Message-ID: <20240912073921.453203-36-pierrick.bouvier@linaro.org> Signed-off-by: Thomas Huth --- tests/qtest/migration-helpers.c | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/qtest/migration-helpers.c b/tests/qtest/migration-helpers.c index a43d180c80..0025933883 100644 --- a/tests/qtest/migration-helpers.c +++ b/tests/qtest/migration-helpers.c @@ -76,7 +76,6 @@ static QDict *SocketAddress_to_qdict(SocketAddress *addr) break; default: g_assert_not_reached(); - break; } return dict; From a1b47343fe27d5b827e24b02921988fa3c304201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Fri, 5 Jul 2024 14:45:27 +0200 Subject: [PATCH 13/17] system: Sort QEMU_ARCH_VIRTIO_PCI definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sort the QEMU_ARCH_VIRTIO_PCI to simplify adding/removing entries. Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20240705124528.97471-2-philmd@linaro.org> Reviewed-by: Pierrick Bouvier Signed-off-by: Thomas Huth --- system/qdev-monitor.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index 6af6ef7d66..acdc8b73a3 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -55,12 +55,17 @@ typedef struct QDevAlias } QDevAlias; /* default virtio transport per architecture */ -#define QEMU_ARCH_VIRTIO_PCI (QEMU_ARCH_ALPHA | QEMU_ARCH_ARM | \ - QEMU_ARCH_HPPA | QEMU_ARCH_I386 | \ - QEMU_ARCH_MIPS | QEMU_ARCH_PPC | \ - QEMU_ARCH_RISCV | QEMU_ARCH_SH4 | \ - QEMU_ARCH_SPARC | QEMU_ARCH_XTENSA | \ - QEMU_ARCH_LOONGARCH) +#define QEMU_ARCH_VIRTIO_PCI (QEMU_ARCH_ALPHA | \ + QEMU_ARCH_ARM | \ + QEMU_ARCH_HPPA | \ + QEMU_ARCH_I386 | \ + QEMU_ARCH_LOONGARCH | \ + QEMU_ARCH_MIPS | \ + QEMU_ARCH_PPC | \ + QEMU_ARCH_RISCV | \ + QEMU_ARCH_SH4 | \ + QEMU_ARCH_SPARC | \ + QEMU_ARCH_XTENSA) #define QEMU_ARCH_VIRTIO_CCW (QEMU_ARCH_S390X) #define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K) From eef0a1e3f26df52590a8f40298efb841e241bdf4 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 5 Jul 2024 14:45:28 +0200 Subject: [PATCH 14/17] system: Enable the device aliases for or1k, too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now that we've got a "virt" machine for or1k that supports PCI too (commit 40fef82c4e "hw/openrisc: Add PCI bus support to virt") we can also enable the virtio device aliases like we do on other similar platforms. This will e.g. help to run the iotests with qemu-system-or1k later. Reviewed-by: Philippe Mathieu-Daudé Message-ID: <20240705090808.1305765-1-thuth@redhat.com> Signed-off-by: Philippe Mathieu-Daudé Message-ID: <20240705124528.97471-3-philmd@linaro.org> Signed-off-by: Thomas Huth --- system/qdev-monitor.c | 1 + 1 file changed, 1 insertion(+) diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c index acdc8b73a3..44994ea0e1 100644 --- a/system/qdev-monitor.c +++ b/system/qdev-monitor.c @@ -61,6 +61,7 @@ typedef struct QDevAlias QEMU_ARCH_I386 | \ QEMU_ARCH_LOONGARCH | \ QEMU_ARCH_MIPS | \ + QEMU_ARCH_OPENRISC | \ QEMU_ARCH_PPC | \ QEMU_ARCH_RISCV | \ QEMU_ARCH_SH4 | \ From c0f86125c38599e5d4b39a0bb9161252623de694 Mon Sep 17 00:00:00 2001 From: Matheus Tavares Bernardino Date: Fri, 13 Sep 2024 08:19:28 -0300 Subject: [PATCH 15/17] docs/fuzz: fix outdated mention to enable-sanitizers This options has been removed at cb771ac1f5 (meson: Split --enable-sanitizers to --enable-{asan, ubsan}, 2024-08-13), so let's update its last standing mention in the docs. Signed-off-by: Matheus Tavares Bernardino Reviewed-by: Brian Cain Message-ID: <0ecf4e1ab26771009d74a2ce61e7c17ddc586ef7.1726226316.git.quic_mathbern@quicinc.com> Signed-off-by: Thomas Huth --- docs/devel/testing/fuzzing.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/devel/testing/fuzzing.rst b/docs/devel/testing/fuzzing.rst index dfe1973cf8..c3ac084311 100644 --- a/docs/devel/testing/fuzzing.rst +++ b/docs/devel/testing/fuzzing.rst @@ -21,8 +21,9 @@ Building the fuzzers To build the fuzzers, install a recent version of clang: Configure with (substitute the clang binaries with the version you installed). -Here, enable-sanitizers, is optional but it allows us to reliably detect bugs -such as out-of-bounds accesses, use-after-frees, double-frees etc.:: +Here, enable-asan and enable-ubsan are optional but they allow us to reliably +detect bugs such as out-of-bounds accesses, uses-after-free, double-frees +etc.:: CC=clang-8 CXX=clang++-8 /path/to/configure \ --enable-fuzzing --enable-asan --enable-ubsan From 0d2a8acf3fba4d0a572d621967652503a346ceaf Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 13 Sep 2024 19:51:40 +0200 Subject: [PATCH 16/17] tests/functional: Move the mips64el fuloong2e test into the thorough category MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit d2fce37597c2 added a test that downloads an asset from the internet, so this test should not be run by default anymore and be put into the thorough category instead. Message-ID: <20240913175140.3329083-1-thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Thomas Huth --- tests/functional/meson.build | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/functional/meson.build b/tests/functional/meson.build index 975e609073..8d5520349d 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -86,11 +86,8 @@ tests_mipsel_system_thorough = [ 'mipsel_malta', ] -tests_mips64el_system_quick = [ - 'mips64el_fuloong2e', -] - tests_mips64el_system_thorough = [ + 'mips64el_fuloong2e', 'mips64el_loongson3v', 'mips64el_malta', ] From 66659fe76d3577b2cc3aa36d3935e3a2e9558e82 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 16 Sep 2024 14:49:13 +0100 Subject: [PATCH 17/17] .gitlab-ci.d/crossbuilds.yml: Force 'make check' to -j2 for cross-i686-tci In commit 1374ed49e1453c300 we forced the cross-i686-tci job to -j1 to see if this helped with test timeouts. It seems to help with that but on the other hand we now sometimes run into the overall 60 minute job timeout. Try -j2 instead. Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Message-ID: <20240916134913.2540486-1-peter.maydell@linaro.org> Signed-off-by: Thomas Huth --- .gitlab-ci.d/crossbuilds.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 1e21d082aa..95dfc39224 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -62,11 +62,11 @@ cross-i686-tci: IMAGE: debian-i686-cross ACCEL: tcg-interpreter EXTRA_CONFIGURE_OPTS: --target-list=i386-softmmu,i386-linux-user,aarch64-softmmu,aarch64-linux-user,ppc-softmmu,ppc-linux-user --disable-plugins --disable-kvm - # Force tests to run in series, to see whether this + # Force tests to run with reduced parallelism, to see whether this # reduces the flakiness of this CI job. The CI # environment by default shows us 8 CPUs and so we # would otherwise be using a parallelism of 9. - MAKE_CHECK_ARGS: check check-tcg -j1 + MAKE_CHECK_ARGS: check check-tcg -j2 cross-mipsel-system: extends: .cross_system_build_job