KVM: x86: allow hotplug of VCPU with APIC ID over 0xff
authorRadim Krčmář <rkrcmar@redhat.com>
Thu, 15 Dec 2016 17:06:48 +0000 (18:06 +0100)
committerRadim Krčmář <rkrcmar@redhat.com>
Mon, 9 Jan 2017 13:47:48 +0000 (14:47 +0100)
commit5bd5db385b3e13c702365574c0b7350c6ea45e84
treef2ab889b6410e6b29479a2249d69c788b717b590
parentb4535b58ae0df8b7cf0fe92a0c23aa3cf862e3cc
KVM: x86: allow hotplug of VCPU with APIC ID over 0xff

LAPIC after reset is in xAPIC mode, which poses a problem for hotplug of
VCPUs with high APIC ID, because reset VCPU is waiting for INIT/SIPI,
but there is no way to uniquely address it using xAPIC.

From many possible options, we chose the one that also works on real
hardware: accepting interrupts addressed to LAPIC's x2APIC ID even in
xAPIC mode.

KVM intentionally differs from real hardware, because real hardware
(Knights Landing) does just "x2apic_id & 0xff" to decide whether to
accept the interrupt in xAPIC mode and it can deliver one interrupt to
more than one physical destination, e.g. 0x123 to 0x123 and 0x23.

Fixes: 682f732ecf73 ("KVM: x86: bump MAX_VCPUS to 288")
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/lapic.c