linux/arch/x86/kvm
Marcelo Tosatti fa40a8214b KVM: switch irq injection/acking data structures to irq_lock
Protect irq injection/acking data structures with a separate irq_lock
mutex. This fixes the following deadlock:

CPU A                               CPU B
kvm_vm_ioctl_deassign_dev_irq()
  mutex_lock(&kvm->lock);            worker_thread()
  -> kvm_deassign_irq()                -> kvm_assigned_dev_interrupt_work_handler()
    -> deassign_host_irq()               mutex_lock(&kvm->lock);
      -> cancel_work_sync() [blocked]

[gleb: fix ia64 path]

Reported-by: Alex Williamson <alex.williamson@hp.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2009-09-10 08:32:49 +03:00
..
i8254.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
i8254.h KVM: Allow PIT emulation without speaker port 2009-09-10 08:32:41 +03:00
i8259.c KVM: Grab pic lock in kvm_pic_clear_isr_ack 2009-09-10 08:32:48 +03:00
irq.c KVM: Remove irq_pending bitmap 2009-06-10 11:48:57 +03:00
irq.h KVM: make irq ack notifications aware of routing table 2009-03-24 11:03:08 +02:00
Kconfig KVM: irqfd 2009-09-10 08:32:41 +03:00
kvm_cache_regs.h KVM: Cache pdptrs 2009-09-10 08:32:46 +03:00
kvm_timer.h KVM: unify part of generic timer handling 2009-06-10 11:48:25 +03:00
lapic.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
lapic.h KVM: APIC: get rid of deliver_bitmask 2009-06-10 11:48:27 +03:00
Makefile KVM: irqfd 2009-09-10 08:32:41 +03:00
mmu.c KVM: Cache pdptrs 2009-09-10 08:32:46 +03:00
mmu.h KVM: Use rsvd_bits_mask in load_pdptrs() 2009-06-10 11:48:36 +03:00
paging_tmpl.h KVM: Cache pdptrs 2009-09-10 08:32:46 +03:00
svm.c KVM: Cache pdptrs 2009-09-10 08:32:46 +03:00
timer.c KVM: unify part of generic timer handling 2009-06-10 11:48:25 +03:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: VMX: Fix reporting of unhandled EPT violations 2009-09-10 08:32:46 +03:00
x86_emulate.c KVM: x86 emulator: fix jmp far decoding (opcode 0xea) 2009-09-10 08:32:40 +03:00
x86.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
x86.h KVM: Do not re-execute INTn instruction. 2009-06-10 11:48:58 +03:00