linux/arch/x86/kvm
Paolo Bonzini 4ff6f8e61e KVM: emulate: fix CMPXCHG8B on 32-bit hosts
This has been broken for a long time: it broke first in 2.6.35, then was
almost fixed in 2.6.36 but this one-liner slipped through the cracks.
The bug shows up as an infinite loop in Windows 7 (and newer) boot on
32-bit hosts without EPT.

Windows uses CMPXCHG8B to write to page tables, which causes a
page fault if running without EPT; the emulator is then called from
kvm_mmu_page_fault.  The loop then happens if the higher 4 bytes are
not 0; the common case for this is that the NX bit (bit 63) is 1.

Fixes: 6550e1f165
Fixes: 16518d5ada
Cc: stable@vger.kernel.org   # 2.6.35+
Reported-by: Erik Rull <erik.rull@rdsoftware.de>
Tested-by: Erik Rull <erik.rull@rdsoftware.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-02-23 22:28:48 +01:00
..
Kconfig Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
Makefile kvm: x86: move assigned-dev.c and iommu.c to arch/x86/ 2014-11-23 18:33:36 +01:00
assigned-dev.c KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
assigned-dev.h KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
cpuid.c KVM: cpuid: recompute CPUID 0xD.0:EBX,ECX 2014-12-05 13:57:49 +01:00
cpuid.h KVM: x86: Warn if guest virtual address space is not 48-bits 2014-09-24 14:07:48 +02:00
emulate.c KVM: emulate: fix CMPXCHG8B on 32-bit hosts 2015-02-23 22:28:48 +01:00
i8254.c KVM: x86: Improve thread safety in pit 2014-10-24 13:21:14 +02:00
i8254.h KVM: fold kvm_pit_timer into kvm_kpit_state 2012-08-01 00:21:07 -03:00
i8259.c KVM: inject ExtINT interrupt before APIC interrupts 2012-12-13 23:05:21 -02:00
ioapic.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +01:00
ioapic.h KVM: x86: return bool from kvm_apic_match*() 2015-01-30 12:26:45 +01:00
iommu.c kvm: iommu: Add cond_resched to legacy device assignment code 2015-01-27 21:31:12 +01:00
irq.c KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use 2014-08-05 15:00:24 +02:00
irq.h KVM: switch to symbolic name for irq_states size 2012-07-20 16:12:16 -03:00
irq_comm.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +01:00
kvm_cache_regs.h KVM: MMU: Do not unconditionally read PDPTE from guest memory 2011-09-25 19:18:01 +03:00
lapic.c Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
lapic.h KVM: nVMX: Enable nested posted interrupt processing 2015-02-03 17:15:08 +01:00
mmu.c KVM: x86: Add new dirty logging kvm_x86_ops for PML 2015-01-29 15:31:41 +01:00
mmu.h KVM: x86: #PF error-code on R/W operations is wrong 2015-01-09 10:24:11 +01:00
mmu_audit.c arch/x86: replace strict_strto calls 2014-08-08 15:57:28 -07:00
mmutrace.h x86/kvm/tracing: Use helper function trace_seq_buffer_ptr() 2014-11-19 15:25:36 -05:00
paging_tmpl.h KVM: x86: Wrong assertion on paging_tmpl.h 2014-10-24 13:30:37 +02:00
pmu.c KVM: x86: Clarify PMU related features bit manipulation 2014-08-20 13:01:25 +02:00
svm.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-02-16 14:58:12 -08:00
trace.h KVM: VMX: Add PML support in VMX 2015-01-30 09:39:54 +01:00
tss.h
vmx.c KVM: VMX: fix build without CONFIG_SMP 2015-02-23 22:28:48 +01:00
x86.c kvm: add halt_poll_ns module parameter 2015-02-06 13:08:37 +01:00
x86.h kvm: x86: Remove kvm_make_request from lapic.c 2015-01-08 22:48:08 +01:00