sorry, i am also quite confused.... the caller of your function handle_IRQ_event() is __do_IRQ(), which is thus: if (likely(!(desc->status & IRQ_DISABLED))) { action_ret = handle_IRQ_event(irq, desc->action); if (!noirqdebug) note_interrupt(irq, desc, action_ret); } so what it means that only when IRQ_DISABLED is NOT SET, then handle_IRQ_event() will be called, simulating a software-based IRQ. and so the above function WILL ALWAYS BE CALLED WITH IRQ_DISABLED NOT SET (assuming there is no other caller of handle_IRQ_event()). errhhhh?? Am i right? - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs