Re: [PATCH 08/10] Add -kvm option

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

 



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

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux