From: ehrhardt@linux.vnet.ibm.com To: aliguori@us.ibm.com Cc: ehrhardt@linux.vnet.ibm.com, avi@qumranet.com, qemu-devel@nongnu.org, kvm@vger.kernel.org Subject: [PATCH] qemu: report issues causing the kvm probe to fail v3 Date: Thu, 8 Jan 2009 14:54:08 +0100 [thread overview] Message-ID: <1231422848-32179-1-git-send-email-ehrhardt@linux.vnet.ibm.com> (raw) From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> The patch applies to upstream qemu as well as kvm-userspace, but since it is the qemu configure script I think it should go to upstream qemu (Anthony) first and with the next merge to kvm-userspace. On the other hand it is the kvm probe so an ack from Avi in case v3 is ok would be reasonable. *updates* v2 - it also reports other errors than just #error preprocessor statements (requested by Avi) v3 - In case awk or grep is not installed it now gracfully (silently) fails still disabling kvm (requested by Anthony) This patch is about reporting more details of the issue if configuring kvm fails. 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". Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> --- configure | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/qemu/configure b/qemu/configure --- a/qemu/configure +++ b/qemu/configure @@ -1002,13 +1002,17 @@ 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) || \ - !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) +#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 +#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) +#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS #endif int main(void) { return 0; } EOF @@ -1021,7 +1025,16 @@ EOF > /dev/null 2>/dev/null ; then : else - kvm="no" + kvm="no"; + if [ -x "`which awk 2>/dev/null`" ] && \ + [ -x "`which grep 2>/dev/null`" ]; then + kvmerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \ + | grep "error: " \ + | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'` + if test "$kvmerr" != "" ; then + kvm="no - (${kvmerr})" + fi + fi fi fi
WARNING: multiple messages have this Message-ID (diff)
From: ehrhardt@linux.vnet.ibm.com To: aliguori@us.ibm.com Cc: ehrhardt@linux.vnet.ibm.com, qemu-devel@nongnu.org, avi@qumranet.com, kvm@vger.kernel.org Subject: [Qemu-devel] [PATCH] qemu: report issues causing the kvm probe to fail v3 Date: Thu, 8 Jan 2009 14:54:08 +0100 [thread overview] Message-ID: <1231422848-32179-1-git-send-email-ehrhardt@linux.vnet.ibm.com> (raw) From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> The patch applies to upstream qemu as well as kvm-userspace, but since it is the qemu configure script I think it should go to upstream qemu (Anthony) first and with the next merge to kvm-userspace. On the other hand it is the kvm probe so an ack from Avi in case v3 is ok would be reasonable. *updates* v2 - it also reports other errors than just #error preprocessor statements (requested by Avi) v3 - In case awk or grep is not installed it now gracfully (silently) fails still disabling kvm (requested by Anthony) This patch is about reporting more details of the issue if configuring kvm fails. 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". Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> --- configure | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/qemu/configure b/qemu/configure --- a/qemu/configure +++ b/qemu/configure @@ -1002,13 +1002,17 @@ 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) || \ - !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) +#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 +#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS) +#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS #endif int main(void) { return 0; } EOF @@ -1021,7 +1025,16 @@ EOF > /dev/null 2>/dev/null ; then : else - kvm="no" + kvm="no"; + if [ -x "`which awk 2>/dev/null`" ] && \ + [ -x "`which grep 2>/dev/null`" ]; then + kvmerr=`$cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $kvm_cflags $TMPC 2>&1 \ + | grep "error: " \ + | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'` + if test "$kvmerr" != "" ; then + kvm="no - (${kvmerr})" + fi + fi fi fi
next reply other threads:[~2009-01-08 13:54 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2009-01-08 13:54 ehrhardt [this message] 2009-01-08 13:54 ` [Qemu-devel] [PATCH] qemu: report issues causing the kvm probe to fail v3 ehrhardt 2009-01-08 15:28 ` Avi Kivity 2009-01-08 15:28 ` [Qemu-devel] " Avi Kivity 2009-01-08 20:34 ` Anthony Liguori 2009-01-08 20:34 ` [Qemu-devel] " Anthony Liguori 2009-01-09 7:33 ` Christian Ehrhardt 2009-01-09 7:33 ` [Qemu-devel] " Christian Ehrhardt 2009-01-15 21:57 ` Anthony Liguori 2009-01-15 21:57 ` [Qemu-devel] " Anthony Liguori
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=1231422848-32179-1-git-send-email-ehrhardt@linux.vnet.ibm.com \ --to=ehrhardt@linux.vnet.ibm.com \ --cc=aliguori@us.ibm.com \ --cc=avi@qumranet.com \ --cc=kvm@vger.kernel.org \ --cc=qemu-devel@nongnu.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.