Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 0/2] 2 fixes for runqemu
@ 2015-06-25  9:24 Robert Yang
  2015-06-25  9:24 ` [PATCH 1/2] runqemu: disable graphic when no DISPLAY Robert Yang
  2015-06-25  9:24 ` [PATCH 2/2] runqemu: enable kvm when use tap under sudo Robert Yang
  0 siblings, 2 replies; 6+ messages in thread
From: Robert Yang @ 2015-06-25  9:24 UTC (permalink / raw)
  To: openembedded-core

Hello,

The 2 patches will make qemu easier to use.

// Robert

The following changes since commit 2587b83faabdc8858e8746201805369ed8d53ba8:

  wpa-supplicant: Revert "Make SystemD D-Bus config conditional" (2015-06-24 14:03:25 +0100)

are available in the git repository at:

  git://git.openembedded.org/openembedded-core-contrib rbt/qemu
  http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/qemu

Robert Yang (2):
  runqemu: disable graphic when no DISPLAY
  runqemu: enable kvm when use tap under sudo

 scripts/runqemu          |   20 ++++++++++++++++----
 scripts/runqemu-internal |   15 +++++++++++++++
 2 files changed, 31 insertions(+), 4 deletions(-)

-- 
1.7.9.5



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] runqemu: disable graphic when no DISPLAY
  2015-06-25  9:24 [PATCH 0/2] 2 fixes for runqemu Robert Yang
@ 2015-06-25  9:24 ` Robert Yang
  2015-06-25 12:13   ` Burton, Ross
  2015-06-25  9:24 ` [PATCH 2/2] runqemu: enable kvm when use tap under sudo Robert Yang
  1 sibling, 1 reply; 6+ messages in thread
From: Robert Yang @ 2015-06-25  9:24 UTC (permalink / raw)
  To: openembedded-core

Disable graphic when no DISPLAY rather than print an error like:
[snip]
Could not initialize SDL(No available video device) - exiting
[snip]

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
---
 scripts/runqemu |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/runqemu b/scripts/runqemu
index 09c507d..d9e91af 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -70,6 +70,7 @@ SCRIPT_KERNEL_OPT=""
 SERIALSTDIO=""
 KVM_ENABLED="no"
 KVM_ACTIVE="no"
+GRAPHIC="yes"
 
 # Determine whether the file is a kernel or QEMU image, and set the
 # appropriate variables
@@ -142,8 +143,7 @@ while true; do
 	    ISOFS=true
 	    ;;
         "nographic")
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -nographic"
-            SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
+            GRAPHIC="no"
             ;;
         "serial")
             SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -serial stdio"
@@ -291,6 +291,13 @@ if [ "x$KVM_ENABLED" = "xyes" ]; then
     fi
 fi
 
+# Disable graphic when no DISPLAY or -nographic is specified.
+if [ -z "$DISPLAY" -o "$GRAPHIC" = "no" ]; then
+    echo "Disabling graphic."
+    SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -nographic"
+    SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
+fi
+
 machine2=`echo $MACHINE | tr 'a-z' 'A-Z' | sed 's/-/_/'`
 # MACHINE is now set for all cases
 
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] runqemu: enable kvm when use tap under sudo
  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  9:24 ` Robert Yang
  2015-06-25  9:41   ` Robert Yang
  1 sibling, 1 reply; 6+ messages in thread
From: Robert Yang @ 2015-06-25  9:24 UTC (permalink / raw)
  To: openembedded-core

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
 
+
             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
-- 
1.7.9.5



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] runqemu: enable kvm when use tap under sudo
  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
  0 siblings, 0 replies; 6+ messages in thread
From: Robert Yang @ 2015-06-25  9:41 UTC (permalink / raw)
  To: openembedded-core



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
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] runqemu: disable graphic when no DISPLAY
  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
  0 siblings, 1 reply; 6+ messages in thread
From: Burton, Ross @ 2015-06-25 12:13 UTC (permalink / raw)
  To: Robert Yang; +Cc: OE-core

[-- Attachment #1: Type: text/plain, Size: 218 bytes --]

On 25 June 2015 at 10:24, Robert Yang <liezhi.yang@windriver.com> wrote:

> +if [ -z "$DISPLAY" -o "$GRAPHIC" = "no" ]; then
>

Does this break people using QEMU without SDL that connect to it using VNC?

Ross

[-- Attachment #2: Type: text/html, Size: 660 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] runqemu: disable graphic when no DISPLAY
  2015-06-25 12:13   ` Burton, Ross
@ 2015-06-26  1:27     ` Robert Yang
  0 siblings, 0 replies; 6+ messages in thread
From: Robert Yang @ 2015-06-26  1:27 UTC (permalink / raw)
  To: Burton, Ross; +Cc: OE-core



On 06/25/2015 08:13 PM, Burton, Ross wrote:
>
> On 25 June 2015 at 10:24, Robert Yang <liezhi.yang@windriver.com
> <mailto:liezhi.yang@windriver.com>> wrote:
>
>     +if [ -z "$DISPLAY" -o "$GRAPHIC" = "no" ]; then
>
>
> Does this break people using QEMU without SDL that connect to it using VNC?

It doesn't break it, but there is a little different, now both the text
console and graphic vnc server will start, the text console didn't start
before this patch. I'm not sure which is better, I've made another patch
to make it work as before, and put the patches here, you can decide which
one to use.

   git://git.openembedded.org/openembedded-core-contrib rbt/qemu_v2

diff --git a/scripts/runqemu b/scripts/runqemu
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -70,6 +70,8 @@ SCRIPT_KERNEL_OPT=""
  SERIALSTDIO=""
  KVM_ENABLED="no"
  KVM_ACTIVE="no"
+GRAPHIC="yes"
+PUBLICVNC="no"

  # Determine whether the file is a kernel or QEMU image, and set the
  # appropriate variables
@@ -142,8 +144,7 @@ while true; do
         ISOFS=true
         ;;
          "nographic")
-            SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -nographic"
-            SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
+            GRAPHIC="no"
              ;;
          "serial")
              SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -serial stdio"
@@ -187,6 +188,7 @@ while true; do
              ;;
          "publicvnc")
              SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -vnc 0.0.0.0:0"
+            PUBLICVNC="yes"
              ;;
          "") break ;;
          *)
@@ -291,6 +293,13 @@ if [ "x$KVM_ENABLED" = "xyes" ]; then
      fi
  fi

+# Disable graphic when no DISPLAY or -nographic is specified.
+if [ "$GRAPHIC" = "no" ] || [ -z "$DISPLAY" -a "$PUBLICVNC" = "no" ] ; then
+    echo "Disabling graphic."
+    SCRIPT_QEMU_OPT="$SCRIPT_QEMU_OPT -nographic"
+    SCRIPT_KERNEL_OPT="$SCRIPT_KERNEL_OPT console=ttyS0"
+fi
+
  machine2=`echo $MACHINE | tr 'a-z' 'A-Z' | sed 's/-/_/'`
  # MACHINE is now set for all cases


// Robert

>
> Ross


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-06-26  1:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox