From: Mukesh Ojha <quic_mojha@quicinc.com>
To: lkml <linux-kernel@vger.kernel.org>
Cc: <paulmck@kernel.org>, Thomas Gleixner <tglx@linutronix.de>
Subject: synchronize_rcu_expedited gets stuck in hotplug path
Date: Tue, 18 Jan 2022 17:16:39 +0530 [thread overview]
Message-ID: <7359f994-8aaf-3cea-f5cf-c0d3929689d6@quicinc.com> (raw)
Hi ,
We are facing one issue in hotplug test where cpuhp/2 gets stuck in
below path [1] in
synchronize_rcu_expedited at state CPUHP_AP_ONLINE_DYN and it is not
able to proceed.
We see wait_rcu_exp_gp() is queued to cpu2 and it looks like it did not
get chance to
run as we see it as in pending state at cpu2 [2].
So, when exactly cpu2 gets available for scheduling in hotplug path, is
it after
CPUHP_AP_ACTIVE?
It looks to be dead lock here. Can it be fixed by making
wait_rcu_exp_gp() queued on another wq ?
or is it a wrong usage of synchronise_rcu in hotplug path?
[1]
=======================================================
Process: cpuhp/2, [affinity: 0x4] cpu: 2 pid: 24 start: 0xffffff87803e4a00
=====================================================
Task name: cpuhp/2 [affinity: 0x4] pid: 24 cpu: 2 prio: 120 start:
ffffff87803e4a00
state: 0x2[D] exit_state: 0x0 stack base: 0xffffffc010160000
Last_enqueued_ts: 59.022215498 Last_sleep_ts: 59.022922946
Stack:
[<ffffffe9f4074354>] __switch_to+0x248
[<ffffffe9f5c02474>] __schedule+0x5b0
[<ffffffe9f5c02b28>] schedule+0x80
[<ffffffe9f42321a4>] synchronize_rcu_expedited+0x1c4
[<ffffffe9f423b294>] synchronize_rcu+0x4c
[<ffffffe9f6d04ab0>] waltgov_stop[sched_walt]+0x78
[<ffffffe9f512fa28>] cpufreq_add_policy_cpu+0xc0
[<ffffffe9f512e48c>] cpufreq_online[jt]+0x10f4
[<ffffffe9f51323b8>] cpuhp_cpufreq_online+0x14
[<ffffffe9f4128d3c>] cpuhp_invoke_callback+0x2f8
[<ffffffe9f412c30c>] cpuhp_thread_fun+0x130
[<ffffffe9f4187a58>] smpboot_thread_fn+0x180
[<ffffffe9f417d98c>] kthread+0x150
[<ffffffe9f4013918>] ret_to_user[jt]+0x0
[2]
CPU 2
pool 0
IDLE Workqueue worker: kworker/2:3 current_work: (None)
IDLE Workqueue worker: kworker/2:2 current_work: (None)
IDLE Workqueue worker: kworker/2:1 current_work: (None)
IDLE Workqueue worker: kworker/2:0 current_work: (None)
Pending entry: wait_rcu_exp_gp[jt]
Pending entry: lru_add_drain_per_cpu[jt]
Pending entry: wq_barrier_func[jt]
Thanks,
Mukesh
next reply other threads:[~2022-01-18 11:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-18 11:46 Mukesh Ojha [this message]
2022-01-18 20:06 ` synchronize_rcu_expedited gets stuck in hotplug path Paul E. McKenney
2022-01-18 20:11 ` Tejun Heo
2022-01-18 21:41 ` Paul E. McKenney
2022-01-24 14:02 ` Mukesh Ojha
2022-01-24 16:44 ` Paul E. McKenney
2022-01-24 16:58 ` Mukesh Ojha
2022-01-25 20:21 ` Paul E. McKenney
2022-01-26 7:32 ` Mukesh Ojha
2022-01-26 7:33 ` Mukesh Ojha
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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7359f994-8aaf-3cea-f5cf-c0d3929689d6@quicinc.com \
--to=quic_mojha@quicinc.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* 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).