Hi Request some clarification on the 2.4.20 MIPS kernel port. Specifically refer to function wait_on_irq() in arch/mips/kernel/irq.c. This function is called from get_irqlock() which in turn is called from __global_cli eventually by cli(). The wait_on_irq() function does not return until "all the CPUS" have run the ISRs. To reach this state interrupts have to be disabled on all the CPUs and then wait for the ISRs to complete. So __cli() function called from this function is supposed to disable the interrupts. The __cli() in MIPS will disable the Interrupts by resetting the coprocessor register's "Interrupt Enable" bit which is per CPU. So this is going to just disable the interrupts on the current CPU and not others. So in a SMP system with N CPUs, can there be a situation where wait_on_irq() may never return as an ISR could be running in one CPU or the other as the interrupts are not being disabled on all the CPUs? The irq_running() function may always return TRUE for a large number of CPUs in this case. So, is there a problem here or am I missing something? 2.6 kernel seems to be handling the cli() call differently. Thanks Krishnamurthy __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com