All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2 0/2] kvm: fix incorrect LAPIC reset after reboot in x2apic mode
@ 2016-09-22 15:25 Paolo Bonzini
  2016-09-22 15:25 ` [Qemu-devel] [PATCH 1/2] target-i386: introduce kvm_put_one_msr Paolo Bonzini
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Paolo Bonzini @ 2016-09-22 15:25 UTC (permalink / raw)
  To: qemu-devel; +Cc: dgilbert

Linux 4.8 introduces changes that really really require you to set
the APIC base (via either KVM_SET_SREGS or KVM_SET_MSRS) before the
KVM_SET_LAPIC ioctl, unless KVM_SET_LAPIC is immediately preceded by
KVM_GET_LAPIC.  This is because in x2apic mode KVM now moves the APIC id
from bits 31-24 of the KVM_SET_LAPIC argument to bits 7-0 of the APIC_ID
register (0x20).  If QEMU does not nudge the APIC out of x2apic at reset
time, the subsequent KVM_SET_LAPIC incorrectly shifts the APIC id right
and Linux sees (in bits 31-24) a zero id.

While QEMU has always done the right thing, the recent commit 78d6a05
("x86/lapic: Load LAPIC state at post_load", 2016-09-13) changed
that, causing a bug on newer kernels.  Fix this by setting the APIC
base in kvm_apic_put.  Another workaround could be to enable
KVM_X2APIC_API_USE_32BIT_IDS, which lets KVM not mangle the APIC ID.

Despite the "don't break userspace" mantra, I believe that this can be
considered a QEMU bug.

I checked kvmtool and it only calls KVM_SET_LAPIC after a KVM_GET_LAPIC,
which avoids the issue in the first place.

Dr. David Alan Gilbert (1):
  kvm: apic: set APIC base as part of kvm_apic_put

Paolo Bonzini (1):
  target-i386: introduce kvm_put_one_msr

v1->v2: send the right patches

 hw/i386/kvm/apic.c     |  2 ++
 target-i386/kvm.c      | 31 ++++++++++++++++++++++---------
 target-i386/kvm_i386.h |  2 ++
 3 files changed, 26 insertions(+), 9 deletions(-)

-- 
2.7.4

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-09-22 15:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-09-22 15:25 [Qemu-devel] [PATCH v2 0/2] kvm: fix incorrect LAPIC reset after reboot in x2apic mode Paolo Bonzini
2016-09-22 15:25 ` [Qemu-devel] [PATCH 1/2] target-i386: introduce kvm_put_one_msr Paolo Bonzini
2016-09-22 15:25 ` [Qemu-devel] [PATCH 2/2] kvm: apic: set APIC base as part of kvm_apic_put Paolo Bonzini
2016-09-22 15:29 ` [Qemu-devel] [PATCH v2 0/2] kvm: fix incorrect LAPIC reset after reboot in x2apic mode Dr. David Alan Gilbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.