Hi, Any thoughts on this issue? Thanks Krishnamurthy --- Krishnamurthy Daulatabad <krishnamurthydv@xxxxxxxxx> wrote: > 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 > > __________________________________ Do you Yahoo!? Jazz up your holiday email with celebrity designs. Learn more. http://celebrity.mail.yahoo.com