|
@@ -114,16 +114,16 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
|
|
irq_enter();
|
|
irq_enter();
|
|
irq = __get_cpu_var(vector_irq)[vector];
|
|
irq = __get_cpu_var(vector_irq)[vector];
|
|
|
|
|
|
- if (unlikely(irq >= NR_IRQS)) {
|
|
|
|
- printk(KERN_EMERG "%s: cannot handle IRQ %d\n",
|
|
|
|
- __FUNCTION__, irq);
|
|
|
|
- BUG();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
|
#ifdef CONFIG_DEBUG_STACKOVERFLOW
|
|
stack_overflow_check(regs);
|
|
stack_overflow_check(regs);
|
|
#endif
|
|
#endif
|
|
- generic_handle_irq(irq);
|
|
|
|
|
|
+
|
|
|
|
+ if (likely(irq < NR_IRQS))
|
|
|
|
+ generic_handle_irq(irq);
|
|
|
|
+ else
|
|
|
|
+ printk(KERN_EMERG "%s: %d.%d No irq handler for vector\n",
|
|
|
|
+ __func__, smp_processor_id(), vector);
|
|
|
|
+
|
|
irq_exit();
|
|
irq_exit();
|
|
|
|
|
|
set_irq_regs(old_regs);
|
|
set_irq_regs(old_regs);
|