* Peter Zijlstra <peterz@xxxxxxxxxxxxx> [2019-12-10 10:33:38]: > On Tue, Dec 10, 2019 at 10:26:01AM +0100, Peter Zijlstra wrote: > > > > @@ -6716,7 +6737,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ > > > find_matching_se(&se, &pse); > > > update_curr(cfs_rq_of(se)); > > > BUG_ON(!pse); > > > - if (wakeup_preempt_entity(se, pse) == 1) { > > > + if (wakeup_preempt_entity(se, pse) == 1 || kthread_wakeup_preempt(rq, p, wake_flags)) { > > > /* > > > * Bias pick_next to pick the sched entity that is > > > * triggering this preemption. > > > > How about something like: > > > if (wakeup_preempt_entity(se, pse) >= !(wake_flags & WF_KTHREAD)) > > That's a slightly less convoluted expression for the same value :-) Yes, this should work, let me try and get back to you. -- Thanks and Regards Srikar Dronamraju