linux/virt/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
..
coalesced_mmio.c KVM: move coalesced_mmio locking to its own device 2009-09-10 08:32:49 +03:00
coalesced_mmio.h KVM: move coalesced_mmio locking to its own device 2009-09-10 08:32:49 +03:00
eventfd.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
ioapic.c KVM: introduce irq_lock, use it to protect ioapic 2009-09-10 08:32:49 +03:00
ioapic.h KVM: APIC: get rid of deliver_bitmask 2009-06-10 11:48:27 +03:00
iodev.h KVM: cleanup io_device code 2009-09-10 08:32:45 +03:00
iommu.c KVM: Enable snooping control for supported hardware 2009-06-10 11:48:50 +03:00
irq_comm.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
Kconfig KVM: irqfd 2009-09-10 08:32:41 +03:00
kvm_main.c KVM: switch irq injection/acking data structures to irq_lock 2009-09-10 08:32:49 +03:00
kvm_trace.c KVM: Prevent trace call into unloaded module text 2008-12-31 16:55:04 +02:00