On a KVM-only (--disable-tcg) build, the iommu-smmuv3 qtest fails: qemu-system-aarch64: QTest does not support GICv3 emulation Broken pipe ../../tests/qtest/libqtest.c:201: kill_qemu() tried to terminate QEMU process but encountered exit status 1 (expected 0)
This is because the test runs the virt board with the qtest accelerator and gic-version=3. In the virt board this selects the TCG (emulated) GICv3, but in a --disable-tcg build we don't compile that device, only the KVM GICv3 (which isn't usable with qtest). Add a check to the test so we skip it if the arm-gicv3 device isn't in the QEMU binary. Cc: [email protected] Fixes: d8d19c31b220142641 ("tests/qtest: Add SMMUv3 bare-metal test using iommu-testdev") Signed-off-by: Peter Maydell <[email protected]> --- Looks like our CI compile-tests the --disable-tcg build but doesn't try to run "make check" on it. --- tests/qtest/iommu-smmuv3-test.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/qtest/iommu-smmuv3-test.c b/tests/qtest/iommu-smmuv3-test.c index dae9821b92..708fae5fd3 100644 --- a/tests/qtest/iommu-smmuv3-test.c +++ b/tests/qtest/iommu-smmuv3-test.c @@ -64,6 +64,11 @@ static void run_smmuv3_translation(const QSMMUTestConfig *cfg) g_test_skip("virt machine not available"); return; } + if (!qtest_has_device("arm-gicv3")) { + /* This can happen for a KVM-only build: qtest uses the TCG GICv3 */ + g_test_skip("gicv3 not available"); + return; + } /* Initialize QEMU environment for SMMU testing */ qts = qtest_init("-machine virt,acpi=off,gic-version=3,iommu=smmuv3 " -- 2.43.0
