Skip to content

Commit 0fdcccf

Browse files
Peter Zijlstraingomolnar
authored andcommitted
tick/nohz: Call tick_nohz_task_switch() with interrupts disabled
Call tick_nohz_task_switch() slightly earlier after the context switch to benefit from disabled IRQs. This way the function doesn't need to disable them once more. Signed-off-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Frederic Weisbecker <frederic@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20210512232924.150322-10-frederic@kernel.org
1 parent a1dfb63 commit 0fdcccf

2 files changed

Lines changed: 2 additions & 7 deletions

File tree

kernel/sched/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4212,6 +4212,7 @@ static struct rq *finish_task_switch(struct task_struct *prev)
42124212
vtime_task_switch(prev);
42134213
perf_event_task_sched_in(prev, current);
42144214
finish_task(prev);
4215+
tick_nohz_task_switch();
42154216
finish_lock_switch(rq);
42164217
finish_arch_post_lock_switch();
42174218
kcov_finish_switch(current);
@@ -4257,7 +4258,6 @@ static struct rq *finish_task_switch(struct task_struct *prev)
42574258
put_task_struct_rcu_user(prev);
42584259
}
42594260

4260-
tick_nohz_task_switch();
42614261
return rq;
42624262
}
42634263

kernel/time/tick-sched.c

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -487,13 +487,10 @@ void tick_nohz_dep_clear_signal(struct signal_struct *sig, enum tick_dep_bits bi
487487
*/
488488
void __tick_nohz_task_switch(void)
489489
{
490-
unsigned long flags;
491490
struct tick_sched *ts;
492491

493-
local_irq_save(flags);
494-
495492
if (!tick_nohz_full_cpu(smp_processor_id()))
496-
goto out;
493+
return;
497494

498495
ts = this_cpu_ptr(&tick_cpu_sched);
499496

@@ -502,8 +499,6 @@ void __tick_nohz_task_switch(void)
502499
atomic_read(&current->signal->tick_dep_mask))
503500
tick_nohz_full_kick();
504501
}
505-
out:
506-
local_irq_restore(flags);
507502
}
508503

509504
/* Get the boot-time nohz CPU list from the kernel parameters. */

0 commit comments

Comments
 (0)