Re: [announce, patch, RFC] "big IRQ lock" removal, IRQ cleanups.

Oleg Nesterov
2002-07-20T17:51:26Z

Hello.

> - to remove the preemption count increase/decrease code from the lowlevel
> IRQ assembly code.

So do_IRQ() can start with preempt_count == 0.
Suppose another cpu sets TIF_NEED_RESCHED flag
at the same time.

spin_lock(&desc->lock) sets preempt_count == 1.
Before calling handle_IRQ_event() (which adds IRQ_OFFSET
to preempt_count), do_IRQ() does spin_unlock(&desc->lock)
and falls into schedule().

Am I missed something?

It seems to me that call to irq_enter() must be shifted
from handle_IRQ_event() to do_IRQ().

Oleg.