[PATCH 3/7] sched: Make pick_next_task_idle() more consistent

From: Peter Zijlstra
Date: Fri Nov 08 2019 - 08:21:46 EST


Only pick_next_task_fair() needs the @prev and @rf argument; these are
required to implement the cpu-cgroup optimization. None of the other
pick_next_task() methods need this. Make pick_next_task_idle() more
consistent.

Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
---
kernel/sched/core.c | 6 ++++--
kernel/sched/idle.c | 3 +--
2 files changed, 5 insertions(+), 4 deletions(-)

--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3922,8 +3922,10 @@ pick_next_task(struct rq *rq, struct tas
goto restart;

/* Assumes fair_sched_class->next == idle_sched_class */
- if (unlikely(!p))
- p = idle_sched_class.pick_next_task(rq, prev, rf);
+ if (unlikely(!p)) {
+ put_prev_task(rq, prev);
+ p = idle_sched_class.pick_next_task(rq, NULL, NULL);
+ }

return p;
}
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -390,8 +390,7 @@ pick_next_task_idle(struct rq *rq, struc
{
struct task_struct *next = rq->idle;

- if (prev)
- put_prev_task(rq, prev);
+ WARN_ON_ONCE(prev || rf);

set_next_task_idle(rq, next);