Any thoughts on this issue?
--- Krishnamurthy Daulatabad
> Request some clarification on the 2.4.20 MIPS
> 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().
> wait_on_irq() function does not return until "all
> 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
> 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?
> 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
> 2.6 kernel seems to be handling the cli() call
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam
> protection around
Do you Yahoo!?
Jazz up your holiday email with celebrity designs. Learn more.