archive mirror
 help / color / mirror / Atom feed
From: Vasily Gorbik <>
To: Josh Poimboeuf <>,
	Jiri Kosina <>, Miroslav Benes <>,
	Petr Mladek <>
Cc: Joe Lawrence <>,
	Ingo Molnar <>,
	Peter Zijlstra <>,
	Frederic Weisbecker <>,
	Thomas Gleixner <>,
	Heiko Carstens <>,
	Sven Schnelle <>,
	Sumanth Korikkar <>,,
Subject: [PATCH] livepatch: Fix idle cpu's tasks transition
Date: Thu, 9 Sep 2021 11:16:01 +0200	[thread overview]
Message-ID: <> (raw)

On an idle system with large amount of cpus it might happen that
klp_update_patch_state() is not reached in do_idle() for a long periods
of time. With debug messages enabled log is filled with:
[  499.442643] livepatch: klp_try_switch_task: swapper/63:0 is running

without any signs of progress. Ending up with "failed to complete

On s390 LPAR with 128 cpus not a single transition is able to complete
and livepatch kselftests fail. Tests on idling x86 kvm instance with 128
cpus demonstrate similar symptoms with and without CONFIG_NO_HZ.

To deal with that, since runqueue is already locked in
klp_try_switch_task() identify idling cpus and trigger rescheduling
potentially waking them up and making sure idle tasks break out of
do_idle() inner loop and reach klp_update_patch_state(). This helps to
speed up transition time while avoiding unnecessary extra system load.

Signed-off-by: Vasily Gorbik <>
Previous discussion and RFC PATCH:

 kernel/livepatch/transition.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c
index 3a4beb9395c4..c5832b2dd081 100644
--- a/kernel/livepatch/transition.c
+++ b/kernel/livepatch/transition.c
@@ -308,6 +308,8 @@ static bool klp_try_switch_task(struct task_struct *task)
 	rq = task_rq_lock(task, &flags);
 	if (task_running(rq, task) && task != current) {
+		if (is_idle_task(task))
+			resched_curr(rq);
 		snprintf(err_buf, STACK_ERR_BUF_SIZE,
 			 "%s: %s:%d is running\n", __func__, task->comm,

             reply	other threads:[~2021-09-09  9:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-09  9:16 Vasily Gorbik [this message]
2021-09-10  9:17 ` [PATCH] livepatch: Fix idle cpu's tasks transition Petr Mladek
2021-09-10  9:32 ` Miroslav Benes
2021-09-10 16:03 ` Josh Poimboeuf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).