From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: [PATCH 08/10] Add -kvm option Date: Thu, 04 Mar 2010 13:38:27 -0600 Message-ID: <4B900C33.1010406@codemonkey.ws> References: <1267215141-13629-1-git-send-email-glommer@redhat.com> <1267215141-13629-2-git-send-email-glommer@redhat.com> <1267215141-13629-3-git-send-email-glommer@redhat.com> <1267215141-13629-4-git-send-email-glommer@redhat.com> <1267215141-13629-5-git-send-email-glommer@redhat.com> <1267215141-13629-6-git-send-email-glommer@redhat.com> <1267215141-13629-7-git-send-email-glommer@redhat.com> <1267215141-13629-8-git-send-email-glommer@redhat.com> <1267215141-13629-9-git-send-email-glommer@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org, mtosatti@redhat.com, Gerd Hoffmann To: Glauber Costa Return-path: Received: from mail-ew0-f220.google.com ([209.85.219.220]:64252 "EHLO mail-ew0-f220.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756225Ab0CDTig (ORCPT ); Thu, 4 Mar 2010 14:38:36 -0500 Received: by ewy20 with SMTP id 20so148654ewy.21 for ; Thu, 04 Mar 2010 11:38:34 -0800 (PST) In-Reply-To: <1267215141-13629-9-git-send-email-glommer@redhat.com> Sender: kvm-owner@vger.kernel.org List-ID: On 02/26/2010 02:12 PM, Glauber Costa wrote: > This option deprecates --enable-kvm. It is a more flexible option, > that makes use of qemu-opts, and allow us to pass on options to enable or > disable kernel irqchip, for example. > > Signed-off-by: Glauber Costa > kernel vs. userspace irqchip shouldn't be a kvm option. Ideally, it would be a -device thing but I think we've agreed that -device won't cover platform devices. So what we probably should do is change the machine option to accept a qopts list, IOW: -M pc,irqchip=user|kernel,pit=user|kernel,... That certainly makes a lot more sense for non-x86 KVM targets (like s390 and ppc). And certainly, there's nothing that says that every x86 KVM target is going to have an APIC... Regards, Anthony Liguori > --- > kvm-all.c | 1 + > kvm.h | 1 + > qemu-config.c | 16 ++++++++++++++++ > qemu-config.h | 1 + > qemu-options.hx | 11 +++++++++-- > vl.c | 11 +++++++++++ > 6 files changed, 39 insertions(+), 2 deletions(-) > > diff --git a/kvm-all.c b/kvm-all.c > index 00e7411..0527e0f 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -52,6 +52,7 @@ typedef struct KVMSlot > typedef struct kvm_dirty_log KVMDirtyLog; > > int kvm_allowed = 0; > +int kvm_use_kernel_chip = 1; > > struct KVMState > { > diff --git a/kvm.h b/kvm.h > index 7278874..480e651 100644 > --- a/kvm.h > +++ b/kvm.h > @@ -20,6 +20,7 @@ > > #ifdef CONFIG_KVM > extern int kvm_allowed; > +extern int kvm_use_kernel_chip; > > #define kvm_enabled() (kvm_allowed) > #else > diff --git a/qemu-config.c b/qemu-config.c > index 246fae6..310838e 100644 > --- a/qemu-config.c > +++ b/qemu-config.c > @@ -290,6 +290,21 @@ QemuOptsList qemu_cpudef_opts = { > }, > }; > > +QemuOptsList qemu_kvm_opts = { > + .name = "kvm", > + .head = QTAILQ_HEAD_INITIALIZER(qemu_kvm_opts.head), > + .desc = { > + { > + .name = "irqchip-in-kernel", > + .type = QEMU_OPT_BOOL, > + },{ > + .name = "enabled", > + .type = QEMU_OPT_BOOL, > + }, > + { /* end if list */ } > + }, > +}; > + > static QemuOptsList *lists[] = { > &qemu_drive_opts, > &qemu_chardev_opts, > @@ -300,6 +315,7 @@ static QemuOptsList *lists[] = { > &qemu_global_opts, > &qemu_mon_opts, > &qemu_cpudef_opts, > +&qemu_kvm_opts, > NULL, > }; > > diff --git a/qemu-config.h b/qemu-config.h > index b335c42..506e5fb 100644 > --- a/qemu-config.h > +++ b/qemu-config.h > @@ -10,6 +10,7 @@ extern QemuOptsList qemu_rtc_opts; > extern QemuOptsList qemu_global_opts; > extern QemuOptsList qemu_mon_opts; > extern QemuOptsList qemu_cpudef_opts; > +extern QemuOptsList qemu_kvm_opts; > > int qemu_set_option(const char *str); > int qemu_global_option(const char *str); > diff --git a/qemu-options.hx b/qemu-options.hx > index 3f49b44..f8fd86d 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -1793,10 +1793,17 @@ Set the filename for the BIOS. > ETEXI > > #ifdef CONFIG_KVM > -DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \ > - "-enable-kvm enable KVM full virtualization support\n") > +HXCOMM Options deprecated by -kvm > +DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, "") > + > +DEF("kvm", HAS_ARG, QEMU_OPTION_kvm, \ > + "-kvm enable=on|off,irqchip-in-kernel=on|off\n" \ > + " enable KVM full virtualization support\n") > + > #endif > STEXI > +@item -kvm enable=[on|off][,irqchip-in-kernel=on|off] > +@findex -kvm > @item -enable-kvm > @findex -enable-kvm > Enable KVM full virtualization support. This option is only available > diff --git a/vl.c b/vl.c > index 66e477a..8c94fee 100644 > --- a/vl.c > +++ b/vl.c > @@ -5416,6 +5416,17 @@ int main(int argc, char **argv, char **envp) > case QEMU_OPTION_enable_kvm: > kvm_allowed = 1; > break; > + case QEMU_OPTION_kvm: > + > + opts = qemu_opts_parse(&qemu_kvm_opts, optarg, NULL); > + if (!opts) { > + fprintf(stderr, "parse error: %s\n", optarg); > + exit(1); > + } > + > + kvm_allowed = qemu_opt_get_bool(opts, "enabled", 1); > + kvm_use_kernel_chip = qemu_opt_get_bool(opts, "irqchip-in-kernel", 1); > + break; > #endif > case QEMU_OPTION_usb: > usb_enabled = 1; >