From 3e7aa2edcdc893e1468d91f1174e401aa00e5a55 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 2 May 2018 20:06:13 +0200 Subject: [PATCH] test-functions: don't nest KVM (#8883) Nested KVM is very flaky as we learnt from our CI. Hence, let's avoid KVM whenever we detect we are already running inside of KVM. Maybe one day nested KVM is fixed, at which point we can turn this on again, but for now let's simply avoid nested KVM, since reliable CI is more important than quick CI, I guess. And yes, avoiding KVM for our qemu runs does make things substantially slower, but I think it's not a complete loss. Inspired by @evverx' findings in: https://github.com/systemd/systemd/pull/8701#issuecomment-380213302 --- test/test-functions | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/test/test-functions b/test/test-functions index 963a32b..cc9b025 100644 --- a/test/test-functions +++ b/test/test-functions @@ -29,9 +29,12 @@ STATEFILE="$STATEDIR/.testdir" TESTLOG="$STATEDIR/test.log" function find_qemu_bin() { - # SUSE and Red Hat call the binary qemu-kvm - # Debian and Gentoo call it kvm - [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep '^/' -m1) + # SUSE and Red Hat call the binary qemu-kvm. Debian and Gentoo call it kvm. + # Either way, only use this version if we aren't running in KVM, because + # nested KVM is flaky still. + if [ `systemd-detect-virt -v` != kvm ] ; then + [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep '^/' -m1) + fi [ "$ARCH" ] || ARCH=$(uname -m) case $ARCH in @@ -137,7 +140,8 @@ $KERNEL_APPEND \ QEMU_OPTIONS="$QEMU_OPTIONS -initrd $INITRD" fi - if [ -c /dev/kvm ]; then + # Let's use KVM if it is available, but let's avoid using nested KVM as that is still flaky + if [ -c /dev/kvm -a `systemd-detect-virt -v` != kvm ]; then QEMU_OPTIONS="$QEMU_OPTIONS -machine accel=kvm -enable-kvm -cpu host" fi -- 2.7.4