Hi,
Any thoughts on this issue?
Thanks
Krishnamurthy
--- Krishnamurthy Daulatabad
<krishnamurthydv@yahoo.com> 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
|