Re: scheduler ignores need_resched flag in 2.2.x and 2.3.x?

From: Jun Sun (
Date: Tue Mar 21 2000 - 13:38:05 EST

William Montgomery wrote:
> The scenario you describe _is_ fixed by Ingo's patch, see below:
> -----------------
> in linux/kernel/sched.c - reschedule_idle_slow
> int this_cpu = smp_processor_id();
> struct task_struct *tsk;
> - tsk = current;
> + tsk = cpu_curr(this_cpu);
> if (preemption_goodness(tsk, p, this_cpu) > 0)
> tsk->need_resched = 1;
> -----------------
> This eliminates the race and is a bug which should be fixed in 2.2.x.
> The latest lowlatency patch can be found at:
> Wm

The above code DOES fix the problem I was describing.

Your email seems to suggest the above code also fix some other problems?

If we choose the above way to fix the lost need_resched flag, we would
need to apply the similar fix to two other functions for the SMP version

        1. smp_local_timer_interrupt()
        2. update_process_times()

(I might miss one or two, but essentially all functions that a) can be
from interrupt context and b) need_resched flag is set to the CURRENT
need to be modified in a similar way.)


If we were to fix *ONLY* the lost need_resched flag problem, I still
my fix a little better. However, if Ingo's fix has other benefits,
we probably should take his.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

This archive was generated by hypermail 2b29 : Thu Mar 23 2000 - 21:00:34 EST