Forráskód Böngészése

KVM: x86: deprecate -M kernel-irqchip=off except for -M isapc

The userspace local APIC is basically untested and does not support many
features such as TSC deadline timer, x2APIC or PV spinlocks.  On the
other hand, the PIT and IOAPIC are okay as they are not tied to
the processor and are tested with -M kernel-irqchip=split.

Therefore, deprecate the local APIC and, with it, limit
-M kernel-irqchip=off to the ISA PC machine type, which does not
have a local APIC at all.

Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo Bonzini 4 éve
szülő
commit
2c933ac6a8
2 módosított fájl, 13 hozzáadás és 0 törlés
  1. 7 0
      docs/system/deprecated.rst
  2. 6 0
      hw/intc/apic.c

+ 7 - 0
docs/system/deprecated.rst

@@ -153,6 +153,13 @@ The ``-writeconfig`` option is not able to serialize the entire contents
 of the QEMU command line.  It is thus considered a failed experiment
 of the QEMU command line.  It is thus considered a failed experiment
 and deprecated, with no current replacement.
 and deprecated, with no current replacement.
 
 
+Userspace local APIC with KVM (x86, since 6.0)
+''''''''''''''''''''''''''''''''''''''''''''''
+
+Using ``-M kernel-irqchip=off`` with x86 machine types that include a local
+APIC is deprecated.  The ``split`` setting is supported, as is using
+``-M kernel-irqchip=off`` with the ISA PC machine type.
+
 QEMU Machine Protocol (QMP) commands
 QEMU Machine Protocol (QMP) commands
 ------------------------------------
 ------------------------------------
 
 

+ 6 - 0
hw/intc/apic.c

@@ -25,6 +25,7 @@
 #include "hw/intc/i8259.h"
 #include "hw/intc/i8259.h"
 #include "hw/pci/msi.h"
 #include "hw/pci/msi.h"
 #include "qemu/host-utils.h"
 #include "qemu/host-utils.h"
+#include "sysemu/kvm.h"
 #include "trace.h"
 #include "trace.h"
 #include "hw/i386/apic-msidef.h"
 #include "hw/i386/apic-msidef.h"
 #include "qapi/error.h"
 #include "qapi/error.h"
@@ -875,6 +876,11 @@ static void apic_realize(DeviceState *dev, Error **errp)
         return;
         return;
     }
     }
 
 
+    if (kvm_enabled()) {
+        warn_report("Userspace local APIC is deprecated for KVM.");
+        warn_report("Do not use kernel-irqchip except for the -M isapc machine type.");
+    }
+
     memory_region_init_io(&s->io_memory, OBJECT(s), &apic_io_ops, s, "apic-msi",
     memory_region_init_io(&s->io_memory, OBJECT(s), &apic_io_ops, s, "apic-msi",
                           APIC_SPACE_SIZE);
                           APIC_SPACE_SIZE);