From 2ae8b9173fb2388af6514c730d620ed5f450bc34 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Tue, 7 Feb 2012 18:44:12 +0000 Subject: irq: Add extra debugging to help track down why an assertion is failing Signed-off-by: Andrew Cooper Acked-by: Keir Fraser Committed-by: Ian Jackson --- xen/arch/x86/irq.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'xen/arch/x86/irq.c') diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index bbcfa0988a..e9e1a9e552 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -608,6 +608,8 @@ void move_native_irq(struct irq_desc *desc) 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_interrupt(struct cpu_user_regs *regs) 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); } } -- cgit v1.2.3