linux/arch/x86/kvm
Radim Krčmář f563db4bdb KVM: SVM: fix interrupt injection (apic->isr_count always 0)
In commit b4eef9b36d, we started to use hwapic_isr_update() != NULL
instead of kvm_apic_vid_enabled(vcpu->kvm).  This didn't work because
SVM had it defined and "apicv" path in apic_{set,clear}_isr() does not
change apic->isr_count, because it should always be 1.  The initial
value of apic->isr_count was based on kvm_apic_vid_enabled(vcpu->kvm),
which is always 0 for SVM, so KVM could have injected interrupts when it
shouldn't.

Fix it by implicitly setting SVM's hwapic_isr_update to NULL and make the
initial isr_count depend on hwapic_isr_update() for good measure.

Fixes: b4eef9b36d ("kvm: x86: vmx: NULL out hwapic_isr_update() in case of !enable_apicv")
Reported-and-tested-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
2015-03-02 19:04:40 -03: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 KVM: SVM: fix interrupt injection (apic->isr_count always 0) 2015-03-02 19:04:40 -03: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 KVM: SVM: fix interrupt injection (apic->isr_count always 0) 2015-03-02 19:04:40 -03: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