Upstream is moving towards this mechanism, so start using it in qemu-kvm
already to configure the specific defaults: kvm enabled on, just like
in-kernel irqchips.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
---
 hw/pc_piix.c |    7 +++++++
 kvm-all.c    |    8 ++++++++
 vl.c         |    9 +++------
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/hw/pc_piix.c b/hw/pc_piix.c
index c9c580c..156fcc8 100644
--- a/hw/pc_piix.c
+++ b/hw/pc_piix.c
@@ -394,6 +394,7 @@ static QEMUMachine pc_machine_v1_0 = {
     .init = pc_init_pci,
     .max_cpus = 255,
     .is_default = 1,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
 };
 
 static QEMUMachine pc_machine_v0_15 = {
@@ -409,6 +410,7 @@ static QEMUMachine pc_machine_v0_14 = {
     .desc = "Standard PC",
     .init = pc_init_pci,
     .max_cpus = 255,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
     .compat_props = (GlobalProperty[]) {
         {
             .driver   = "qxl",
@@ -444,6 +446,7 @@ static QEMUMachine pc_machine_v0_13 = {
     .desc = "Standard PC",
     .init = pc_init_pci_no_kvmclock,
     .max_cpus = 255,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
     .compat_props = (GlobalProperty[]) {
         {
             .driver   = "virtio-9p-pci",
@@ -491,6 +494,7 @@ static QEMUMachine pc_machine_v0_12 = {
     .desc = "Standard PC",
     .init = pc_init_pci_no_kvmclock,
     .max_cpus = 255,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
     .compat_props = (GlobalProperty[]) {
         {
             .driver   = "virtio-serial-pci",
@@ -542,6 +546,7 @@ static QEMUMachine pc_machine_v0_11 = {
     .desc = "Standard PC, qemu 0.11",
     .init = pc_init_pci_no_kvmclock,
     .max_cpus = 255,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
     .compat_props = (GlobalProperty[]) {
         {
             .driver   = "virtio-blk-pci",
@@ -601,6 +606,7 @@ static QEMUMachine pc_machine_v0_10 = {
     .desc = "Standard PC, qemu 0.10",
     .init = pc_init_pci_no_kvmclock,
     .max_cpus = 255,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
     .compat_props = (GlobalProperty[]) {
         {
             .driver   = "virtio-blk-pci",
@@ -672,6 +678,7 @@ static QEMUMachine isapc_machine = {
     .desc = "ISA-only PC",
     .init = pc_init_isa,
     .max_cpus = 1,
+    .default_machine_opts = "accel=kvm,kernel_irqchip=on",
 };
 
 #ifdef CONFIG_XEN
diff --git a/kvm-all.c b/kvm-all.c
index ae89389..515ba6e 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -887,6 +887,7 @@ int kvm_init(void)
     const KVMCapabilityInfo *missing_cap;
     int ret;
     int i;
+    QemuOptsList *list;
 
     s = g_malloc0(sizeof(KVMState));
 
@@ -973,6 +974,13 @@ int kvm_init(void)
     s->pit_state2 = kvm_check_extension(s, KVM_CAP_PIT_STATE2);
 #endif
 
+    list = qemu_find_opts("machine");
+    if (!QTAILQ_EMPTY(&list->head) &&
+        !qemu_opt_get_bool(QTAILQ_FIRST(&list->head),
+                           "kernel_irqchip", false)) {
+        kvm_irqchip = 0;
+    }
+
     ret = kvm_arch_init(s);
     if (ret < 0) {
         goto err;
diff --git a/vl.c b/vl.c
index c5994ee..c3b4037 100644
--- a/vl.c
+++ b/vl.c
@@ -2040,13 +2040,8 @@ static int configure_accelerator(void)
     }
 
     if (p == NULL) {
-#ifdef CONFIG_KVM_OPTIONS
-        /* Use the default "accelerator", kvm */
-        p = "kvm";
-#else
         /* Use the default "accelerator", tcg */
         p = "tcg";
-#endif
     }
 
     while (!accel_initalised && *p != '\0') {
@@ -2908,7 +2903,9 @@ int main(int argc, char **argv, char **envp)
                 break;
 #ifdef CONFIG_KVM_OPTIONS
            case QEMU_OPTION_no_kvm_irqchip: {
-               kvm_irqchip = 0;
+                olist = qemu_find_opts("machine");
+                qemu_opts_reset(olist);
+                qemu_opts_parse(olist, "accel=kvm,kernel_irqchip=off", 0);
                break;
            }
            case QEMU_OPTION_no_kvm_pit: {
-- 
1.7.3.4

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to