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<glommer@xxxxxxxxxx>
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;
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html