linux/arch/x86/kvm
Radim Krčmář 370777daab KVM: VMX: fix vmwrite to invalid VMCS
fpu_activate is called outside of vcpu_load(), which means it should not
touch VMCS, but fpu_activate needs to.  Avoid the call by moving it to a
point where we know that the guest needs eager FPU and VMCS is loaded.

This will get rid of the following trace

 vmwrite error: reg 6800 value 0 (err 1)
  [<ffffffff8162035b>] dump_stack+0x19/0x1b
  [<ffffffffa046c701>] vmwrite_error+0x2c/0x2e [kvm_intel]
  [<ffffffffa045f26f>] vmcs_writel+0x1f/0x30 [kvm_intel]
  [<ffffffffa04617e5>] vmx_fpu_activate.part.61+0x45/0xb0 [kvm_intel]
  [<ffffffffa0461865>] vmx_fpu_activate+0x15/0x20 [kvm_intel]
  [<ffffffffa0560b91>] kvm_arch_vcpu_create+0x51/0x70 [kvm]
  [<ffffffffa0548011>] kvm_vm_ioctl+0x1c1/0x760 [kvm]
  [<ffffffff8118b55a>] ? handle_mm_fault+0x49a/0xec0
  [<ffffffff811e47d5>] do_vfs_ioctl+0x2e5/0x4c0
  [<ffffffff8127abbe>] ? file_has_perm+0xae/0xc0
  [<ffffffff811e4a51>] SyS_ioctl+0xa1/0xc0
  [<ffffffff81630949>] system_call_fastpath+0x16/0x1b

(Note: we also unconditionally activate FPU in vmx_vcpu_reset(), so the
 removed code added nothing.)

Fixes: c447e76b4c ("kvm/fpu: Enable eager restore kvm FPU for MPX")
Cc: <stable@vger.kernel.org>
Reported-by: Vlastimil Holer <vlastimil.holer@gmail.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-07-10 13:25:25 +02:00
..
assigned-dev.c VFS: assorted d_backing_inode() annotations 2015-04-15 15:06:59 -04: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: VMX: fix vmwrite to invalid VMCS 2015-07-10 13:25:25 +02:00
cpuid.h KVM: x86: save/load state on SMM switch 2015-06-04 16:17:46 +02:00
emulate.c KVM: x86: save/load state on SMM switch 2015-06-04 16:17:46 +02:00
i8254.c KVM: x86: make vapics_in_nmi_mode atomic 2015-07-03 18:55:17 +02:00
i8254.h KVM: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
i8259.c KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
ioapic.c KVM: x86: drop unneeded null test 2015-05-07 11:29:47 +02:00
ioapic.h KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
iommu.c kvm: iommu: Add cond_resched to legacy device assignment code 2015-01-27 21:31:12 +01:00
irq_comm.c kvm: x86: Deliver MSI IRQ to only lowest prio cpu if msi_redir_hint is true 2015-05-07 11:29:45 +02: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: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
Kconfig KVM: x86: mark legacy PCI device assignment as deprecated 2015-06-05 17:26:39 +02:00
kvm_cache_regs.h KVM: x86: API changes for SMM support 2015-06-04 16:01:11 +02:00
lapic.c KVM: x86: keep track of LVT0 changes under APICv 2015-07-03 18:55:18 +02:00
lapic.h KVM: x86: keep track of LVT0 changes under APICv 2015-07-03 18:55:18 +02:00
Makefile KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch 2015-06-23 14:12:14 +02:00
mmu_audit.c Minor merge needed, due to function move. 2015-07-01 10:49:25 -07:00
mmu.c KVM: x86: reintroduce kvm_is_mmio_pfn 2015-07-10 13:25:24 +02:00
mmu.h KVM: MMU: fix MTRR update 2015-05-19 20:52:42 +02:00
mmutrace.h tracing: Rename ftrace_event.h to trace_events.h 2015-05-13 14:05:12 -04:00
mtrr.c KVM: MTRR: do not map huge page for non-consistent range 2015-06-19 17:16:29 +02:00
paging_tmpl.h KVM: x86: use vcpu-specific functions to read/write/translate GFNs 2015-06-05 17:26:36 +02:00
pmu_amd.c KVM: x86/vPMU: Implement AMD vPMU code for KVM 2015-06-23 14:12:15 +02:00
pmu_intel.c KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch 2015-06-23 14:12:14 +02:00
pmu.c KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch 2015-06-23 14:12:14 +02:00
pmu.h KVM: x86/vPMU: Define kvm_pmu_ops to support vPMU function dispatch 2015-06-23 14:12:14 +02:00
svm.c This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
trace.h KVM: x86: save/load state on SMM switch 2015-06-04 16:17:46 +02:00
tss.h
vmx.c This patch series contains several clean ups and even a new trace clock 2015-06-26 14:02:43 -07:00
x86.c KVM: VMX: fix vmwrite to invalid VMCS 2015-07-10 13:25:25 +02:00
x86.h KVM: MTRR: do not map huge page for non-consistent range 2015-06-19 17:16:29 +02:00