]> git.baikalelectronics.ru Git - kernel.git/commit
kvm: x86: skip populating logical dest map if apic is not sw enabled
authorRadim Krcmar <rkrcmar@redhat.com>
Wed, 14 Aug 2019 03:37:37 +0000 (23:37 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 14 Aug 2019 14:28:33 +0000 (16:28 +0200)
commita58d17461f95425646bb181018f6d4573a51e14c
treeb8216206a6dba93f225ce669c67a5c5301e3bba6
parentaa42ee772b9b9e0b89f39e3327004b3d0ee25969
kvm: x86: skip populating logical dest map if apic is not sw enabled

recalculate_apic_map does not santize ldr and it's possible that
multiple bits are set. In that case, a previous valid entry
can potentially be overwritten by an invalid one.

This condition is hit when booting a 32 bit, >8 CPU, RHEL6 guest and then
triggering a crash to boot a kdump kernel. This is the sequence of
events:
1. Linux boots in bigsmp mode and enables PhysFlat, however, it still
writes to the LDR which probably will never be used.
2. However, when booting into kdump, the stale LDR values remain as
they are not cleared by the guest and there isn't a apic reset.
3. kdump boots with 1 cpu, and uses Logical Destination Mode but the
logical map has been overwritten and points to an inactive vcpu.

Signed-off-by: Radim Krcmar <rkrcmar@redhat.com>
Signed-off-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/lapic.c