Messages in this thread | | | Subject | Re: [PATCH] sched: fix need_resched() when checking peempt | From | Mike Galbraith <> | Date | Wed, 25 May 2011 06:44:37 +0200 |
| |
On Wed, 2011-05-25 at 12:34 +0800, Yong Zhang wrote: > On Wed, May 25, 2011 at 11:24 AM, Yong Zhang <yong.zhang0@gmail.com> wrote: > > On Tue, May 24, 2011 at 9:50 PM, Hillf Danton <dhillf@gmail.com> wrote: > >> On Tue, May 24, 2011 at 9:39 PM, Steven Rostedt <rostedt@goodmis.org> wrote: > >>> On Tue, 2011-05-24 at 21:27 +0800, Hillf Danton wrote: > >>>> When checking if current task could be preempted by a newly woken task, > >>>> further check could be bypassed if the current thread is different from > >>>> the current task of run-queue, and it is corrected accordingly. > >>> > >>> Ug, that change log is an obfuscated mess. But looking at the actual > >>> patch, I figured what you wanted to say. How about this: > >>> > >>> ---- > >>> The RT preempt check tests the wrong task if NEED_RESCHED is set. It > >>> currently checks the local CPU task. It is suppose to check the task > >>> that is running on the run queue we are about to wake another task on. > >>> ---- > >>> > >> Thanks, it is great changelog:) > > > > Good catch. > > > > Reviewed-by: Yong Zhang <yong.zhang0@gmail.com> > > > > BTW, this may be the reason for we could trigger > > WARN_ON_ONCE(test_tsk_need_resched(next)); > > https://lkml.org/lkml/2010/12/20/28 > > > > Peter, Mike, how do you think about it? > > Since rq->lock protects both, that issue needs more digging :)
Yeah, good rainy day project.
-Mike
| |