Here is one more backtrace of the same crash. [ 9199.462928] Call Trace: [ 9199.462928] <IRQ> [<ffffffff80435886>] ? _spin_lock+0x3a/0x42 [ 9199.462928] [<ffffffffa00964f4>] ? :sata_sil:sil_interrupt+0x2b/0x275 [ 9199.462928] [<ffffffff8025f0e6>] ? handle_IRQ_event+0x47/0x8e [ 9199.462928] [<ffffffff802605a2>] ? handle_level_irq+0xae/0x116 [ 9199.462928] [<ffffffff8020e13e>] ? do_IRQ+0x4e/0x9a [ 9199.462928] [<ffffffff8037d4cc>] ? evtchn_do_upcall+0x13c/0x1fc [ 9199.462928] [<ffffffff8020bbde>] ? do_hypervisor_callback+0x1e/0x30 [ 9199.462928] <EOI> [<ffffffff802e48d1>] ? dummy_inode_permission+0x0/0x3 [ 9199.462928] [<ffffffff8037cbf9>] ? xen_poll_irq+0x67/0x74 [ 9199.462928] [<ffffffff8037fb06>] ? xen_spin_wait+0xfa/0x139 [ 9199.462928] [<ffffffff80435cfd>] ? lock_kernel+0x4f/0x63 [ 9199.462928] [<ffffffffa04327b4>] ? :nfs:nfs_permission+0xb0/0x15f [ 9199.462928] [<ffffffff80291e65>] ? permission+0xb5/0x118 [ 9199.462928] [<ffffffff80293469>] ? __link_path_walk+0x145/0xdfa [ 9199.462928] [<ffffffffa044020a>] ? :nfs:nfs_sync_mapping_wait+0x151/0x33f [ 9199.462928] [<ffffffff80294164>] ? path_walk+0x46/0x8b [ 9199.462928] [<ffffffff80294490>] ? do_path_lookup+0x158/0x1ce [ 9199.462928] [<ffffffff80294fd3>] ? __path_lookup_intent_open+0x56/0x97 [ 9199.462928] [<ffffffff80295109>] ? do_filp_open+0x9c/0x7c4 [ 9199.462928] [<ffffffff802888ff>] ? get_unused_fd_flags+0x74/0x13f [ 9199.462928] [<ffffffff80288a10>] ? do_sys_open+0x46/0xc3 [ 9199.462928] [<ffffffff8020b528>] ? system_call+0x68/0x6d [ 9199.462928] [<ffffffff8020b4c0>] ? system_call+0x0/0x6d
What is similar in all instances - it enters ... -> lock_kernel() -> xen_spin_wait() -> xen_poll_irq(), then gets an interrupt, then enters ... -> :sata_sil:sil_interrupt() -> _spin_lock() and gets kernel BUG at drivers/xen/core/spinlock.c:74 which is xen_spin_wait(): ... 66 /* announce we're spinning */ 67 spinning = &__get_cpu_var(spinning); 68 if (spinning->lock) { 69 BUG_ON(spinning->lock == lock); 70 if(raw_irqs_disabled()) { 71 BUG_ON(__get_cpu_var(spinning_bh).lock == lock); 72 spinning = &__get_cpu_var(spinning_irq); 73 } else { 74 BUG_ON(!in_softirq()); 75 spinning = &__get_cpu_var(spinning_bh); 76 } 77 BUG_ON(spinning->lock); 78 } ... So code thies to take BKL and spins there. While spinning, interrupt arrives. Interrupt handler tries to take another lock. But xen_spin_wait() is not expecting attempt to take another lock when not raw_irqs_disabled() and not in_softirq(). Here we are in interrupt handler, bit hard irq are not disabled. Looks like check in line 70 is wrong. Nikita -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org