[PATCH] [PATCH] qemu: report issues causing the kvm probe to fail v2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



# HG changeset patch
# User Christian Ehrhardt <ehrhardt@xxxxxxxxxxxxxxxxxx>
# Date 1229347014 -3600
# Node ID c754b8806d756a19c57fc3b3e317bbe3c147d5ec
# Parent  f7dc67cd9b74c5d7ad322686e58325f879d93468
[PATCH] qemu: report issues causing the kvm probe to fail v2

From: Christian Ehrhardt <ehrhardt@xxxxxxxxxxxxxxxxxx>

*update to v2*
It now reports all "error:" statements from gcc behind the KVM no status.
As the status line now is a big larger I also found that "kvm support" is
reported twice, so I removed one duplicate. Finally there was also one check
in configure_kvm that did not use "" guards when runnign test on $kvm which
could fail now that it might contain more than just yes/no - I added
apostrophs to prevent that.

I ran into the issue of a failign KVM Probe of the qemu configure script three
times this week always needing "set -x", inserting an exit, masking the cleanup
trap and compiling the c file by hand until I knew what the reason is. I think
we could make easier for developers and end users.
Therefore this patch keeps the qemu style configure output which is a list of
"$Feature $Status", but extend the "no" result like "KVM Support no" with some
more information.

There might be a lot of things going wrong with that probe and I don't want
to handle all of them, but if it is one of the known checks e.g. for
KVM_API_VERSION then we could grep/awk that out and report it. The patch
reports in case of a known case in the style
"KVM support no - (Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS)"

In case more than one #error is triggered it creates a comma separated list in
those brackets and in case it is something else than an #error it just reports
plain old "no".

I sent a similar patch matching qemu upstream version of this file to
qemu-devel@xxxxxxxxxx to keep both in sync as much as possible.

Signed-off-by: Christian Ehrhardt <ehrhardt@xxxxxxxxxxxxxxxxxx>
---

[diffstat]
 configure |   22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

[diff]

diff --git a/qemu/configure b/qemu/configure
--- a/qemu/configure
+++ b/qemu/configure
@@ -1037,12 +1037,14 @@ if test "$kvm" = "yes" ; then
 if test "$kvm" = "yes" ; then
     cat > $TMPC <<EOF
 #include <linux/kvm.h>
-#if !defined(KVM_API_VERSION) || \
-    KVM_API_VERSION < 12 || \
-    KVM_API_VERSION > 12 || \
-    !defined(KVM_CAP_USER_MEMORY) || \
-    !defined(KVM_CAP_SET_TSS_ADDR)
+#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
 #error Invalid KVM version
+#endif
+#if !defined(KVM_CAP_USER_MEMORY)
+#error Missing KVM capability KVM_CAP_USER_MEMORY
+#endif
+#if !defined(KVM_CAP_SET_TSS_ADDR)
+#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
 #endif
 int main(void) { return 0; }
 EOF
@@ -1055,7 +1057,12 @@ EOF
       2>/dev/null ; then
     :
   else
-    kvm="no"
+    kvmprobeerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 | grep "error: " | awk --field-separator "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
+    if test "$kvmprobeerr" != "" ; then
+      kvm="no - (${kvmprobeerr})"
+    else
+      kvm="no"
+    fi
   fi
 fi
 
@@ -1201,7 +1208,6 @@ if test -n "$sparc_cpu"; then
     echo "Target Sparc Arch $sparc_cpu"
 fi
 echo "kqemu support     $kqemu"
-echo "kvm support       $kvm"
 echo "CPU emulation     $cpu_emulation"
 if test $cpu = "powerpc"; then
 echo "libfdt support    $device_tree_support"
@@ -1638,7 +1644,7 @@ disable_cpu_emulation() {
 }
 
 configure_kvm() {
-  if test $kvm = "yes" -a "$target_softmmu" = "yes" -a \
+  if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
           \( "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "ia64" -o "$cpu" = "powerpc" \); then
     echo "#define USE_KVM 1" >> $config_h
     echo "USE_KVM=1" >> $config_mak
--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM Development]     [KVM ARM]     [KVM ia64]     [Linux Virtualization]     [Linux USB Devel]     [Linux Video]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux