Skip to content

Commit 80f5c1b

Browse files
Peter ZijlstraIngo Molnar
authored andcommitted
sched/core: Add missing update_rq_clock() in detach_task_cfs_rq()
Instead of adding the update_rq_clock() all the way at the bottom of the callstack, add one at the top, this to aid later effort to minimize update_rq_lock() calls. WARNING: CPU: 0 PID: 1 at ../kernel/sched/sched.h:797 detach_task_cfs_rq() rq->clock_update_flags < RQCF_ACT_SKIP Call Trace: dump_stack() __warn() warn_slowpath_fmt() detach_task_cfs_rq() switched_from_fair() __sched_setscheduler() _sched_setscheduler() sched_set_stop_task() cpu_stop_create() __smpboot_create_thread.part.2() smpboot_register_percpu_thread_cpumask() cpu_stop_init() do_one_initcall() ? print_cpu_info() kernel_init_freeable() ? rest_init() kernel_init() ret_from_fork() Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 4126bad commit 80f5c1b

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

kernel/sched/core.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3655,6 +3655,7 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
36553655
BUG_ON(prio > MAX_PRIO);
36563656

36573657
rq = __task_rq_lock(p, &rf);
3658+
update_rq_clock(rq);
36583659

36593660
/*
36603661
* Idle task boosting is a nono in general. There is one
@@ -4183,6 +4184,7 @@ static int __sched_setscheduler(struct task_struct *p,
41834184
* runqueue lock must be held.
41844185
*/
41854186
rq = task_rq_lock(p, &rf);
4187+
update_rq_clock(rq);
41864188

41874189
/*
41884190
* Changing the policy of the stop threads its a very bad idea
@@ -8435,6 +8437,7 @@ static void cpu_cgroup_fork(struct task_struct *task)
84358437

84368438
rq = task_rq_lock(task, &rf);
84378439

8440+
update_rq_clock(rq);
84388441
sched_change_group(task, TASK_SET_GROUP);
84398442

84408443
task_rq_unlock(rq, task, &rf);

0 commit comments

Comments
 (0)