On Mon, 2021-03-01 at 12:17 +0100, Paolo Bonzini wrote: > 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. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
Reviewed-by: Maxim Levitsky <mlevi...@redhat.com> Best regards, Maxim Levitsky > --- > docs/system/deprecated.rst | 7 +++++++ > hw/intc/apic.c | 5 +++++ > 2 files changed, 12 insertions(+) > > diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst > index 561c916da2..ae180dc887 100644 > --- a/docs/system/deprecated.rst > +++ b/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 > 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 > ------------------------------------ > > diff --git a/hw/intc/apic.c b/hw/intc/apic.c > index 3ada22f427..7e9601b89d 100644 > --- a/hw/intc/apic.c > +++ b/hw/intc/apic.c > @@ -875,6 +875,11 @@ static void apic_realize(DeviceState *dev, Error **errp) > 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", > APIC_SPACE_SIZE); >