linux/arch/x86/kvm
Paolo Bonzini 7c9dcb02cb KVM: lapic: sync highest ISR to hardware apic on EOI
commit fc57ac2c9c upstream.

When Hyper-V enlightenments are in effect, Windows prefers to issue an
Hyper-V MSR write to issue an EOI rather than an x2apic MSR write.
The Hyper-V MSR write is not handled by the processor, and besides
being slower, this also causes bugs with APIC virtualization.  The
reason is that on EOI the processor will modify the highest in-service
interrupt (SVI) field of the VMCS, as explained in section 29.1.4 of
the SDM; every other step in EOI virtualization is already done by
apic_send_eoi or on VM entry, but this one is missing.

We need to do the same, and be careful not to muck with the isr_count
and highest_isr_cache fields that are unused when virtual interrupt
delivery is enabled.

Reviewed-by: Yang Zhang <yang.z.zhang@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2014-06-26 15:17:34 -04:00
..
cpuid.c KVM: expose SMAP feature to guest 2014-04-14 17:50:37 -03:00
cpuid.h KVM: Add SMAP support when setting CR4 2014-04-14 17:50:34 -03:00
emulate.c KVM: x86 emulator: emulate MOVAPD 2014-03-17 12:14:30 +01:00
i8254.c KVM: x86: limit PIT timer frequency 2014-01-15 12:43:54 +01: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
irq.c x86, apicv: add virtual interrupt delivery support 2013-01-29 10:48:19 +02:00
irq.h KVM: switch to symbolic name for irq_states size 2012-07-20 16:12:16 -03:00
Kconfig kvm: make KVM_MMU_AUDIT help text more readable 2014-01-20 12:59: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 KVM: lapic: sync highest ISR to hardware apic on EOI 2014-06-26 15:17:34 -04:00
lapic.h KVM: x86: Validate guest writes to MSR_IA32_APICBASE 2014-01-27 14:39:44 +01:00
Makefile kvm: Add VFIO device 2013-10-30 19:02:03 +01:00
mmu.c KVM: Rename variable smep to cr4_smep 2014-04-14 17:50:40 -03:00
mmu.h KVM: Add SMAP support when setting CR4 2014-04-14 17:50:34 -03:00
mmu_audit.c kvm: mmu: delay mmu audit activation 2013-11-20 11:12:56 +02:00
mmutrace.h KVM: MMU: add tracepoint for check_mmio_spte 2013-06-27 14:20:37 +03:00
paging_tmpl.h KVM: Add SMAP support when setting CR4 2014-04-14 17:50:34 -03:00
pmu.c perf, kvm: Support the in_tx/in_tx_cp modifiers in KVM arch perfmon emulation v5 2013-07-19 18:24:45 +02:00
svm.c Merge tag 'kvm-3.15-1' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2014-04-02 14:50:10 -07:00
trace.h kvm: Add a tracepoint write_tsc_offset 2013-06-27 14:20:51 +03:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: vmx: disable APIC virtualization in nested guests 2014-05-07 13:46:02 +02:00
x86.c Small fixes for x86, slightly larger fixes for PPC, and a forgotten s390 patch. 2014-05-28 08:08:03 -07:00
x86.h KVM: x86: introduce kvm_supported_xcr0() 2014-03-17 12:21:38 +01:00