# HG changeset patch # Parent e2722b24dc0962de37215320b05d1bb7c4c42864 IRQ: Add extra debugging to help track down why this assertion is failing Signed-off-by: Andrew Cooper diff -r e2722b24dc09 xen/arch/x86/irq.c --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -608,6 +608,8 @@ void move_native_irq(struct irq_desc *de desc->handler->enable(desc); } +static void dump_irqs(unsigned char key); + fastcall void smp_irq_move_cleanup_interrupt(struct cpu_user_regs *regs) { unsigned vector, me; @@ -667,7 +669,18 @@ fastcall void smp_irq_move_cleanup_inter if ( desc->arch.used_vectors ) { - ASSERT(test_bit(vector, desc->arch.used_vectors)); + if ( unlikely(!test_bit(vector, desc->arch.used_vectors)) ) + { + bitmap_scnlistprintf(keyhandler_scratch, + sizeof(keyhandler_scratch), + desc->arch.used_vectors->_bits, + NR_VECTORS); + printk("*** IRQ BUG found ***\n" + "CPU%d -Testing vector %d from bitmap %s\n", + me, vector, keyhandler_scratch); + dump_irqs('i'); + BUG(); + } clear_bit(vector, desc->arch.used_vectors); } }