*/
#define MAX_IRQ_CNT 100000
+static int noirqdebug;
static volatile unsigned long irq_err_count;
static spinlock_t irq_controller_lock = SPIN_LOCK_UNLOCKED;
static LIST_HEAD(irq_pending);
static int count = 100;
struct irqaction *action;
- if (!count)
+ if (!count || noirqdebug)
return;
count--;
__do_irq(unsigned int irq, struct irqaction *action, struct pt_regs *regs)
{
unsigned int status;
- int retval = 0;
+ int ret, retval = 0;
spin_unlock(&irq_controller_lock);
status = 0;
do {
- status |= action->flags;
- retval |= action->handler(irq, action->dev_id, regs);
+ ret = action->handler(irq, action->dev_id, regs);
+ if (ret == IRQ_HANDLED)
+ status |= action->flags;
+ retval |= ret;
action = action->next;
} while (action);
init_arch_irq();
init_dma();
}
+
+static int __init noirqdebug_setup(char *str)
+{
+ noirqdebug = 1;
+ return 1;
+}
+
+__setup("noirqdebug", noirqdebug_setup);