From: Robert Yang <liezhi.yang@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH 2/2] runqemu: enable kvm when use tap under sudo
Date: Thu, 25 Jun 2015 17:41:09 +0800 [thread overview]
Message-ID: <558BCCB5.2050607@windriver.com> (raw)
In-Reply-To: <86e000cec70be79f0bb6054bc3a8684fac87faa6.1435224137.git.liezhi.yang@windriver.com>
On 06/25/2015 05:24 PM, Robert Yang wrote:
> Enable kvm support automatically when use tap interface under sudo, the
> thought is, if sudo works well, and qemu-native has been built with kvm
> support, and kvm can be enabled, then enable it, it can be disabled by
> nokvm option.
>
> The previous command:
> $ runqemu qemux86 kvm
> may not work since it checks the current user's read/write permission on
> /dev/kvm and /dev/vhost-net but failed without sudo, it can't use sudo
> to check them since sudo is not a must, sudo is only required when need
> create tap interface, this patch can enable it automatically.
>
> Enable kvm can improve qemu's performance a lot, when test perl-5.22's
> lib/warnings.t on qemux86-64, 70 times improved.
>
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
> scripts/runqemu | 9 +++++++--
> scripts/runqemu-internal | 15 +++++++++++++++
> 2 files changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/runqemu b/scripts/runqemu
> index d9e91af..926d76e 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"
>
> # Determine whether the file is a kernel or QEMU image, and set the
> @@ -180,7 +183,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 694815f..91385ba 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
> @@ -237,6 +250,7 @@ else
> echo "Releasing lockfile of preconfigured tap device '$TAP'"
> release_lock $LOCKFILE
>
> +
Sorry, I removed this blank line in the repo.
// Robert
> if [ "$NFSRUNNING" = "true" ]; then
> echo "Shutting down the userspace NFS server..."
> echo "runqemu-export-rootfs stop $ROOTFS"
> @@ -685,6 +699,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
>
prev parent reply other threads:[~2015-06-25 9:41 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-25 9:24 [PATCH 0/2] 2 fixes for runqemu Robert Yang
2015-06-25 9:24 ` [PATCH 1/2] runqemu: disable graphic when no DISPLAY Robert Yang
2015-06-25 12:13 ` Burton, Ross
2015-06-26 1:27 ` Robert Yang
2015-06-25 9:24 ` [PATCH 2/2] runqemu: enable kvm when use tap under sudo Robert Yang
2015-06-25 9:41 ` Robert Yang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558BCCB5.2050607@windriver.com \
--to=liezhi.yang@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox