aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/runqemu9
-rwxr-xr-xscripts/runqemu-internal14
2 files changed, 21 insertions, 2 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index 78dfd1a047e..01f6cbff97b 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -33,6 +33,7 @@ usage() {
echo " nographic - disables video console"
echo " serial - enables a serial console on /dev/ttyS0"
echo " kvm - enables KVM when running qemux86/qemux86-64 (VT-capable CPU required)"
+ echo " nokvm - disables KVM"
echo " publicvnc - enable a VNC server open to all hosts"
echo " qemuparams=\"xyz\" - specify custom parameters to QEMU"
echo " bootparams=\"xyz\" - specify custom kernel parameters during boot"
@@ -68,8 +69,10 @@ SCRIPT_QEMU_OPT=""
SCRIPT_QEMU_EXTRA_OPT=""
SCRIPT_KERNEL_OPT=""
SERIALSTDIO=""
-KVM_ENABLED="no"
+KVM_ENABLED="maybe"
+KVM_CAPABLE="`grep -q 'vmx\|svm' /proc/cpuinfo && echo 1`"
KVM_ACTIVE="no"
+KVM_SUDO=""
GRAPHIC="yes"
PUBLICVNC="no"
@@ -181,7 +184,9 @@ while true; do
;;
"kvm")
KVM_ENABLED="yes"
- KVM_CAPABLE=`grep -q 'vmx\|svm' /proc/cpuinfo && echo 1`
+ ;;
+ "nokvm")
+ KVM_ENABLED="no"
;;
"slirp")
SLIRP_ENABLED="yes"
diff --git a/scripts/runqemu-internal b/scripts/runqemu-internal
index 694815fb749..25533ecef5a 100755
--- a/scripts/runqemu-internal
+++ b/scripts/runqemu-internal
@@ -217,6 +217,19 @@ else
sudo $QEMUIFUP $USERID $GROUPID $OECORE_NATIVE_SYSROOT
return 1
fi
+
+ # Enale kvm when possible since sudo works well, if
+ # /usr/include/linux/kvm.h exists, qemu-native is built with kvm
+ # support.
+ if [ "$KVM_ENABLED" = "maybe" -a -n "$KVM_CAPABLE" -a \
+ -e /dev/kvm -a -e /dev/vhost-net -a -f /usr/include/linux/kvm.h ] && \
+ [ "$MACHINE" = "qemux86" -o "$MACHINE" = "qemux86-64" ]; then
+ echo "Enabling KVM automatically, can be disabled by nokvm option"
+ SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -enable-kvm"
+ KVM_ACTIVE="yes"
+ KVM_SUDO="sudo"
+ fi
+
LOCKFILE="$LOCKDIR/$tap"
echo "Acquiring lockfile for $tap..."
acquire_lock $LOCKFILE
@@ -685,6 +698,7 @@ if [ "x$SERIALSTDIO" = "x1" ]; then
fi
echo "Running $QEMU..."
+[ -n "$KVM_SUDO" ] && QEMUBIN="$KVM_SUDO $QEMUBIN"
# -no-reboot is a mandatory option - see bug #100
if [ "$FSTYPE" = "vmdk" ]; then
echo $QEMUBIN $VM $QEMUOPTIONS $SERIALOPTS -no-reboot $SCRIPT_QEMU_OPT $SCRIPT_QEMU_EXTRA_OPT