From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51430) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TIjIT-0005zM-GG for qemu-devel@nongnu.org; Mon, 01 Oct 2012 12:56:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TIjIS-0003Lq-1V for qemu-devel@nongnu.org; Mon, 01 Oct 2012 12:56:45 -0400 Received: from hall.aurel32.net ([88.191.126.93]:55141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TIjIR-0003Kx-NJ for qemu-devel@nongnu.org; Mon, 01 Oct 2012 12:56:43 -0400 Date: Mon, 1 Oct 2012 18:56:16 +0200 From: Aurelien Jarno Message-ID: <20121001165616.GA4055@ohm.aurel32.net> References: <20120930191146.GA20012@amt.cnet> <50694EC1.8060006@siemens.com> <20121001093102.GA14797@amt.cnet> <50696E9E.7030302@siemens.com> <87zk468h3y.fsf@codemonkey.ws> <50699CDC.1010604@redhat.com> <87wqzap9ui.fsf@codemonkey.ws> <5069A9DF.4040606@siemens.com> <87wqza2mg6.fsf@codemonkey.ws> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <87wqza2mg6.fsf@codemonkey.ws> Subject: Re: [Qemu-devel] [PATCH] kvm: Set default accelerator to "kvm" if the host supports it List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: kvm , Scott Moser , Jan Kiszka , Marcelo Tosatti , Michael Tokarev , qemu-devel , Blue Swirl , Avi Kivity , Cole Robinson , Paolo Bonzini , Andreas =?iso-8859-15?Q?F=E4rber?= On Mon, Oct 01, 2012 at 11:20:41AM -0500, Anthony Liguori wrote: > Jan Kiszka writes: > > > If we built a target for a host that supports KVM in principle, set the > > default accelerator to KVM as well. This also means the start of QEMU > > will fail to start if KVM support turns out to be unavailable at > > runtime. > > > > Signed-off-by: Jan Kiszka > > --- > > kvm-all.c | 1 + > > kvm-stub.c | 1 + > > kvm.h | 1 + > > vl.c | 4 ++-- > > 4 files changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/kvm-all.c b/kvm-all.c > > index 92a7137..4d5f86c 100644 > > --- a/kvm-all.c > > +++ b/kvm-all.c > > @@ -103,6 +103,7 @@ struct KVMState > > #endif > > }; > > > > +bool kvm_configured = true; > > KVMState *kvm_state; > > bool kvm_kernel_irqchip; > > bool kvm_async_interrupts_allowed; > > diff --git a/kvm-stub.c b/kvm-stub.c > > index 3c52eb5..86a6451 100644 > > --- a/kvm-stub.c > > +++ b/kvm-stub.c > > @@ -17,6 +17,7 @@ > > #include "gdbstub.h" > > #include "kvm.h" > > > > +bool kvm_configured; > > KVMState *kvm_state; > > bool kvm_kernel_irqchip; > > bool kvm_async_interrupts_allowed; > > diff --git a/kvm.h b/kvm.h > > index dea2998..9936e5f 100644 > > --- a/kvm.h > > +++ b/kvm.h > > @@ -22,6 +22,7 @@ > > #include > > #endif > > > > +extern bool kvm_configured; > > extern int kvm_allowed; > > extern bool kvm_kernel_irqchip; > > extern bool kvm_async_interrupts_allowed; > > diff --git a/vl.c b/vl.c > > index 8d305ca..f557bd1 100644 > > --- a/vl.c > > +++ b/vl.c > > @@ -2215,8 +2215,8 @@ static int configure_accelerator(void) > > } > > > > if (p == NULL) { > > - /* Use the default "accelerator", tcg */ > > - p = "tcg"; > > + /* The default accelerator depends on the availability of KVM. */ > > + p = kvm_configured ? "kvm" : "tcg"; > > } > > How about making this an arch_init() function call and then using a #if > defined(KVM_CONFIG) in arch_init.c? > > I hate to introduce another global variable if we can avoid it... > > Otherwise: > > Acked-by: Anthony Liguori > > Blue/Aurelien, any objections? > I am not sure this way of doing is really distribution friendly, where the QEMU package is built for a large variety of hosts, some of them maybe without KVM support. I am all for enabling KVM by default, but I think it should fall back to TCG if it is not enabled (probably with a warning so that the user is aware of that). On the other hand, if the user explicitly enables KVM support with -enable-kvm or with accel=kvm, it should fail to start. In other words, a bit like the configure script options, by default we use auto-detection, but if an option is explicitly enabled, it fails if it can't be enabled. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@aurel32.net http://www.aurel32.net