aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched/idle.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2020-05-26 18:11:01 +0200
committerIngo Molnar <mingo@kernel.org>2020-05-28 10:54:15 +0200
commitb2a02fc43a1f40ef4eb2fb2b06357382608d4d84 (patch)
treebeedd3ab17cd9da7d49948aff6e1d82fe535dc81 /kernel/sched/idle.c
parentsmp: Move irq_work_run() out of flush_smp_call_function_queue() (diff)
downloadlinux-dev-b2a02fc43a1f40ef4eb2fb2b06357382608d4d84.tar.xz
linux-dev-b2a02fc43a1f40ef4eb2fb2b06357382608d4d84.zip
smp: Optimize send_call_function_single_ipi()
Just like the ttwu_queue_remote() IPI, make use of _TIF_POLLING_NRFLAG to avoid sending IPIs to idle CPUs. [ mingo: Fix UP build bug. ] Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lore.kernel.org/r/20200526161907.953304789@infradead.org
Diffstat (limited to 'kernel/sched/idle.c')
-rw-r--r--kernel/sched/idle.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index b743bf38f08f..387fd75ee6f7 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -289,6 +289,11 @@ static void do_idle(void)
*/
smp_mb__after_atomic();
+ /*
+ * RCU relies on this call to be done outside of an RCU read-side
+ * critical section.
+ */
+ flush_smp_call_function_from_idle();
sched_ttwu_pending();
schedule_idle();