From: Lennart Poettering Date: Wed, 2 May 2018 18:06:13 +0000 (+0200) Subject: test-functions: don't nest KVM (#8883) X-Git-Tag: v239~326 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3e7aa2edcdc893e1468d91f1174e401aa00e5a55;p=thirdparty%2Fsystemd.git 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 --- diff --git a/test/test-functions b/test/test-functions index 963a32b5b54..cc9b025dcae 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