[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 06/10] tests/qtest: Fix tests when no KVM or TCG are present
From: |
Fabiano Rosas |
Subject: |
[PATCH v9 06/10] tests/qtest: Fix tests when no KVM or TCG are present |
Date: |
Mon, 13 Mar 2023 12:10:54 -0300 |
It is possible to have a build with both TCG and KVM disabled due to
Xen requiring the i386 and x86_64 binaries to be present in an aarch64
host.
If we build with --disable-tcg on the aarch64 host, we will end-up
with a QEMU binary (x86) that does not support TCG nor KVM.
Skip tests that crash or hang in the above scenario. Do not include
any test cases if TCG and KVM are missing.
Make sure that calls to qtest_has_accel are placed after g_test_init
in similar fashion to commit ae4b01b349 ("tests: Ensure TAP version is
printed before other messages") to avoid TAP parsing errors.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Juan Quintela <quintela@redhat.com>
---
tests/qtest/bios-tables-test.c | 11 +++++++++--
tests/qtest/boot-serial-test.c | 5 +++++
tests/qtest/migration-test.c | 10 +++++++++-
tests/qtest/pxe-test.c | 8 +++++++-
tests/qtest/vmgenid-test.c | 9 +++++++--
5 files changed, 37 insertions(+), 6 deletions(-)
diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c
index 76d5100911..2315adc70c 100644
--- a/tests/qtest/bios-tables-test.c
+++ b/tests/qtest/bios-tables-test.c
@@ -2082,8 +2082,7 @@ static void test_acpi_virt_oem_fields(void)
int main(int argc, char *argv[])
{
const char *arch = qtest_get_arch();
- const bool has_kvm = qtest_has_accel("kvm");
- const bool has_tcg = qtest_has_accel("tcg");
+ bool has_kvm, has_tcg;
char *v_env = getenv("V");
int ret;
@@ -2093,6 +2092,14 @@ int main(int argc, char *argv[])
g_test_init(&argc, &argv, NULL);
+ has_kvm = qtest_has_accel("kvm");
+ has_tcg = qtest_has_accel("tcg");
+
+ if (!has_tcg && !has_kvm) {
+ g_test_skip("No accelerator available");
+ return 0;
+ }
+
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
ret = boot_sector_init(disk);
if (ret) {
diff --git a/tests/qtest/boot-serial-test.c b/tests/qtest/boot-serial-test.c
index 3aef3a97a9..28bab3d5e4 100644
--- a/tests/qtest/boot-serial-test.c
+++ b/tests/qtest/boot-serial-test.c
@@ -287,6 +287,11 @@ int main(int argc, char *argv[])
g_test_init(&argc, &argv, NULL);
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
+ g_test_skip("No accelerator available");
+ return 0;
+ }
+
for (i = 0; tests[i].arch != NULL; i++) {
if (g_str_equal(arch, tests[i].arch) &&
qtest_has_machine(tests[i].machine)) {
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index d4ab3934ed..5e4d562f0b 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -2459,7 +2459,7 @@ static bool kvm_dirty_ring_supported(void)
int main(int argc, char **argv)
{
- const bool has_kvm = qtest_has_accel("kvm");
+ bool has_kvm, has_tcg;
const bool has_uffd = ufd_version_check();
const char *arch = qtest_get_arch();
g_autoptr(GError) err = NULL;
@@ -2467,6 +2467,14 @@ int main(int argc, char **argv)
g_test_init(&argc, &argv, NULL);
+ has_kvm = qtest_has_accel("kvm");
+ has_tcg = qtest_has_accel("tcg");
+
+ if (!has_tcg && !has_kvm) {
+ g_test_skip("No accelerator available");
+ return 0;
+ }
+
/*
* On ppc64, the test only works with kvm-hv, but not with kvm-pr and TCG
* is touchy due to race conditions on dirty bits (especially on PPC for
diff --git a/tests/qtest/pxe-test.c b/tests/qtest/pxe-test.c
index 62b6eef464..5813adcf56 100644
--- a/tests/qtest/pxe-test.c
+++ b/tests/qtest/pxe-test.c
@@ -131,11 +131,17 @@ int main(int argc, char *argv[])
int ret;
const char *arch = qtest_get_arch();
+ g_test_init(&argc, &argv, NULL);
+
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
+ g_test_skip("No accelerator available");
+ return 0;
+ }
+
ret = boot_sector_init(disk);
if(ret)
return ret;
- g_test_init(&argc, &argv, NULL);
if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) {
test_batch(x86_tests, false);
diff --git a/tests/qtest/vmgenid-test.c b/tests/qtest/vmgenid-test.c
index efba76e716..a597cde707 100644
--- a/tests/qtest/vmgenid-test.c
+++ b/tests/qtest/vmgenid-test.c
@@ -165,13 +165,18 @@ int main(int argc, char **argv)
{
int ret;
+ g_test_init(&argc, &argv, NULL);
+
+ if (!qtest_has_accel("tcg") && !qtest_has_accel("kvm")) {
+ g_test_skip("No accelerator available");
+ return 0;
+ }
+
ret = boot_sector_init(disk);
if (ret) {
return ret;
}
- g_test_init(&argc, &argv, NULL);
-
qtest_add_func("/vmgenid/vmgenid/set-guid",
vmgenid_set_guid_test);
qtest_add_func("/vmgenid/vmgenid/set-guid-auto",
--
2.35.3
- [PATCH v9 00/10] target/arm: Allow CONFIG_TCG=n builds, Fabiano Rosas, 2023/03/13
- [PATCH v9 01/10] target/arm: Move cortex sysregs into a separate file, Fabiano Rosas, 2023/03/13
- [PATCH v9 02/10] target/arm: Move 64-bit TCG CPUs into tcg/, Fabiano Rosas, 2023/03/13
- [PATCH v9 03/10] target/arm: move cpu_tcg to tcg/cpu32.c, Fabiano Rosas, 2023/03/13
- [PATCH v9 04/10] target/arm: gdbstub: Guard M-profile code with CONFIG_TCG, Fabiano Rosas, 2023/03/13
- [PATCH v9 05/10] target/arm: gdbstub: Guard pauth code with CONFIG_TCG, Fabiano Rosas, 2023/03/13
- [PATCH v9 06/10] tests/qtest: Fix tests when no KVM or TCG are present,
Fabiano Rosas <=
- [PATCH v9 07/10] tests/avocado: Pass parameters to migration test, Fabiano Rosas, 2023/03/13
- [PATCH v9 08/10] arm/Kconfig: Always select SEMIHOSTING when TCG is present, Fabiano Rosas, 2023/03/13
- [PATCH v9 09/10] arm/Kconfig: Do not build TCG-only boards on a KVM-only build, Fabiano Rosas, 2023/03/13
- [PATCH v9 10/10] gitlab-ci: Check building KVM-only aarch64 target, Fabiano Rosas, 2023/03/13