Messages in this thread | | | Date | Wed, 12 Mar 2014 11:41:24 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [PATCH v3] sched: Fix broken setscheduler() |
| |
On Tue, 11 Mar 2014, Steven Rostedt wrote:
> > I decided to run my tests on linux-next, and my wakeup_rt tracer was > broken. After running a bisect, I found that the problem commit was: > > linux-next commit c365c292d059 > "sched: Consider pi boosting in setscheduler()" > > And the reason the wake_rt tracer test was failing, was because it had > no RT task to trace. I first noticed this when running with > sched_switch event and saw that my RT task still had normal SCHED_OTHER > priority. Looking at the problem commit, I found: > > - p->normal_prio = normal_prio(p); > - p->prio = rt_mutex_getprio(p); > > With no > > + p->normal_prio = normal_prio(p); > + p->prio = rt_mutex_getprio(p); > > Reading what the commit is suppose to do, I realize that the p->prio > can't be set if the task is boosted with a higher prio, but the > p->normal_prio still needs to be set regardless, otherwise, when the > task is deboosted, it wont get the new priority. > > The p->prio has to be set before "check_class_changed()" is called, > otherwise the class wont be changed. > > Also added fix to newprio to include a check for deadline policy that > was missing. This change was suggested by Juri Lelli. > > Link: http://lkml.kernel.org/r/20140306120438.638bfe94@gandalf.local.home > Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
| |