diff options
author | Peter Zijlstra <peterz@infradead.org> | 2021-09-21 23:16:02 +0300 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2021-10-14 14:09:25 +0300 |
commit | 5de62ea84abd732ded7c5569426fd71c0420f83e (patch) | |
tree | aa81d924076649258e23da654192555e9eae7dea /kernel | |
parent | 8850cb663b5cda04d33f9cfbc38889d73d3c8e24 (diff) | |
download | linux-5de62ea84abd732ded7c5569426fd71c0420f83e.tar.xz |
sched,livepatch: Use wake_up_if_idle()
Make sure to prod idle CPUs so they call klp_update_patch_state().
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Vasily Gorbik <gor@linux.ibm.com>
Tested-by: Petr Mladek <pmladek@suse.com>
Tested-by: Vasily Gorbik <gor@linux.ibm.com> # on s390
Link: https://lkml.kernel.org/r/20210929151723.162004989@infradead.org
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/livepatch/transition.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 75251e9dbc3c..5683ac0d2566 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -413,8 +413,11 @@ void klp_try_complete_transition(void) for_each_possible_cpu(cpu) { task = idle_task(cpu); if (cpu_online(cpu)) { - if (!klp_try_switch_task(task)) + if (!klp_try_switch_task(task)) { complete = false; + /* Make idle task go through the main loop. */ + wake_up_if_idle(cpu); + } } else if (task->patch_state != klp_target_state) { /* offline idle tasks can be switched immediately */ clear_tsk_thread_flag(task, TIF_PATCH_PENDING); |