On Wed, Apr 14, 2021 at 10:22:29AM +0800, qianjun.ker...@gmail.com wrote: > From: jun qian <qianjun.ker...@gmail.com> > > As you are already set the TIF_NEED_RESCHED, there is no need > to check resched again.
Still no justification; does this actually help anything? > Signed-off-by: jun qian <qianjun.ker...@gmail.com> > --- > kernel/sched/fair.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index 794c2cb945f8..1a69b5fffe4a 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -4360,19 +4360,26 @@ check_preempt_tick(struct cfs_rq *cfs_rq, struct > sched_entity *curr) > { > unsigned long ideal_runtime, delta_exec; > struct sched_entity *se; > + struct rq *rq = rq_of(cfs_rq); > s64 delta; > > ideal_runtime = sched_slice(cfs_rq, curr); > delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; > if (delta_exec > ideal_runtime) { > - resched_curr(rq_of(cfs_rq)); > + if (!test_tsk_need_resched(rq->curr)) > + resched_curr(rq_of(cfs_rq)); > /* > * The current task ran long enough, ensure it doesn't get > * re-elected due to buddy favours. > */ > clear_buddies(cfs_rq, curr); > return; > - } > + /* > + * If here with TIF_NEED_RESCHED already set from the early entity_tick, > + * there is no need to check again. > + */ > + } else if (test_tsk_need_resched(rq->curr)) > + return; This is horrific style. And, afaict, completely unnecessary.