linux-sg2042/arch/x86/kvm
Avi Kivity 3f353858c9 KVM: Add locking to virtual i8259 interrupt controller
While most accesses to the i8259 are with the kvm mutex taken, the call
to kvm_pic_read_irq() is not.  We can't easily take the kvm mutex there
since the function is called with interrupts disabled.

Fix by adding a spinlock to the virtual interrupt controller.  Since we
can't send an IPI under the spinlock (we also take the same spinlock in
an irq disabled context), we defer the IPI until the spinlock is released.
Similarly, we defer irq ack notifications until after spinlock release to
avoid lock recursion.

Signed-off-by: Avi Kivity <avi@redhat.com>
2008-12-31 16:55:48 +02:00
..
Kconfig KVM: Require the PCI subsystem 2008-11-11 20:56:13 +02:00
Makefile KVM: Separate irq ack notification out of arch/x86/kvm/irq.c 2008-10-15 14:25:35 +02:00
i8254.c KVM: x86: Optimize NMI watchdog delivery 2008-12-31 16:51:47 +02:00
i8254.h KVM: Fix guest shared interrupt with in-kernel irqchip 2008-10-28 14:21:34 +02:00
i8259.c KVM: Add locking to virtual i8259 interrupt controller 2008-12-31 16:55:48 +02:00
irq.c KVM: Separate irq ack notification out of arch/x86/kvm/irq.c 2008-10-15 14:25:35 +02:00
irq.h KVM: Add locking to virtual i8259 interrupt controller 2008-12-31 16:55:48 +02:00
kvm_cache_regs.h KVM: x86: accessors for guest registers 2008-10-15 10:13:57 +02:00
kvm_svm.h KVM: SVM: move svm.h to include/asm 2008-12-31 16:52:28 +02:00
lapic.c KVM: x86: Optimize NMI watchdog delivery 2008-12-31 16:51:47 +02:00
lapic.h KVM: add statics were possible, function definition in lapic.h 2008-07-20 12:40:46 +03:00
mmu.c KVM: MMU: Don't treat a global pte as such if cr4.pge is cleared 2008-12-31 16:55:48 +02:00
mmu.h KVM: MMU: Fix false flooding when a pte points to page table 2008-07-20 12:40:50 +03:00
paging_tmpl.h KVM: MMU: prepopulate the shadow on invlpg 2008-12-31 16:55:44 +02:00
svm.c KVM: SVM: move svm_hardware_disable() code to asm/virtext.h 2008-12-31 16:52:30 +02:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: x86: Rework user space NMI injection as KVM_CAP_USER_NMI 2008-12-31 16:55:47 +02:00
x86.c KVM: x86: Rework user space NMI injection as KVM_CAP_USER_NMI 2008-12-31 16:55:47 +02:00
x86.h KVM: Add a pending interrupt queue 2008-10-15 10:15:13 +02:00
x86_emulate.c KVM: x86 emulator: Fix handling of VMMCALL instruction 2008-12-31 16:55:43 +02:00