LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org> To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, mingo@kernel.org, jiangshanlai@gmail.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org, Yanfei Xu <yanfei.xu@windriver.com>, "Paul E . McKenney" <paulmck@kernel.org> Subject: [PATCH rcu 01/18] rcu: Fix to include first blocked task in stall warning Date: Wed, 21 Jul 2021 13:21:09 -0700 [thread overview] Message-ID: <20210721202127.2129660-1-paulmck@kernel.org> (raw) In-Reply-To: <20210721202042.GA1472052@paulmck-ThinkPad-P17-Gen-1> From: Yanfei Xu <yanfei.xu@windriver.com> The for loop in rcu_print_task_stall() always omits ts[0], which points to the first task blocking the stalled grace period. This in turn fails to count this first task, which means that ndetected will be equal to zero when all CPUs have passed through their quiescent states and only one task is blocking the stalled grace period. This zero value for ndetected will in turn result in an incorrect "All QSes seen" message: rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: rcu: Tasks blocked on level-1 rcu_node (CPUs 12-23): (detected by 15, t=6504 jiffies, g=164777, q=9011209) rcu: All QSes seen, last rcu_preempt kthread activity 1 (4295252379-4295252378), jiffies_till_next_fqs=1, root ->qsmask 0x2 BUG: sleeping function called from invalid context at include/linux/uaccess.h:156 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 70613, name: msgstress04 INFO: lockdep is turned off. Preemption disabled at: [<ffff8000104031a4>] create_object.isra.0+0x204/0x4b0 CPU: 15 PID: 70613 Comm: msgstress04 Kdump: loaded Not tainted 5.12.2-yoctodev-standard #1 Hardware name: Marvell OcteonTX CN96XX board (DT) Call trace: dump_backtrace+0x0/0x2cc show_stack+0x24/0x30 dump_stack+0x110/0x188 ___might_sleep+0x214/0x2d0 __might_sleep+0x7c/0xe0 This commit therefore fixes the loop to include ts[0]. Fixes: c583bcb8f5ed ("rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled") Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> --- kernel/rcu/tree_stall.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index 6c76988cc019f..2e96f9741666d 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -280,8 +280,8 @@ static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags) break; } raw_spin_unlock_irqrestore_rcu_node(rnp, flags); - for (i--; i; i--) { - t = ts[i]; + while (i) { + t = ts[--i]; if (!try_invoke_on_locked_down_task(t, check_slow_task, &rscr)) pr_cont(" P%d", t->pid); else -- 2.31.1.189.g2e36527f23
next prev parent reply other threads:[~2021-07-21 20:21 UTC|newest] Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-21 20:20 [PATCH rcu 0/18] Miscellaneous fixes for v5.15 Paul E. McKenney 2021-07-21 20:21 ` Paul E. McKenney [this message] 2021-07-21 20:21 ` [PATCH rcu 02/18] rcu: Fix stall-warning deadlock due to non-release of rcu_node ->lock Paul E. McKenney 2021-08-03 14:24 ` Qais Yousef 2021-08-03 15:52 ` Paul E. McKenney 2021-08-03 16:12 ` Qais Yousef 2021-08-03 16:28 ` Paul E. McKenney 2021-08-03 16:33 ` Qais Yousef 2021-08-04 13:50 ` Qais Yousef 2021-08-04 22:33 ` Paul E. McKenney 2021-08-06 9:56 ` Qais Yousef 2021-08-06 9:57 ` Qais Yousef 2021-08-06 11:43 ` Paul E. McKenney 2021-08-06 12:33 ` Qais Yousef 2021-07-21 20:21 ` [PATCH rcu 03/18] rcu: Remove special bit at the bottom of the ->dynticks counter Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 04/18] rcu: Weaken ->dynticks accesses and updates Paul E. McKenney 2021-07-21 20:41 ` Linus Torvalds 2021-07-21 21:25 ` Paul E. McKenney 2021-07-28 17:37 ` [PATCH v2 " Paul E. McKenney 2021-07-28 17:58 ` Linus Torvalds 2021-07-28 18:12 ` Mathieu Desnoyers 2021-07-28 18:32 ` Linus Torvalds 2021-07-28 18:39 ` Mathieu Desnoyers 2021-07-28 18:46 ` Paul E. McKenney 2021-07-28 18:46 ` Paul E. McKenney 2021-07-28 18:57 ` Linus Torvalds 2021-07-28 18:23 ` Mathieu Desnoyers 2021-07-28 18:58 ` Paul E. McKenney 2021-07-28 19:45 ` Paul E. McKenney 2021-07-28 20:03 ` Mathieu Desnoyers 2021-07-28 20:28 ` Paul E. McKenney 2021-07-29 14:41 ` Mathieu Desnoyers 2021-07-29 15:57 ` Paul E. McKenney 2021-07-29 17:41 ` Mathieu Desnoyers 2021-07-29 18:05 ` Paul E. McKenney 2021-07-29 18:42 ` Mathieu Desnoyers 2021-07-28 20:37 ` Josh Triplett 2021-07-28 20:47 ` Paul E. McKenney 2021-07-28 22:23 ` Frederic Weisbecker 2021-07-29 1:07 ` Paul E. McKenney 2021-07-29 7:58 ` [PATCH " Boqun Feng 2021-07-29 10:53 ` Frederic Weisbecker 2021-07-30 5:56 ` Boqun Feng 2021-07-30 17:18 ` Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 05/18] rcu: Mark accesses to ->rcu_read_lock_nesting Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 06/18] rculist: Unify documentation about missing list_empty_rcu() Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 07/18] rcu/tree: Handle VM stoppage in stall detection Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 08/18] rcu: Do not disable GP stall detection in rcu_cpu_stall_reset() Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 09/18] rcu: Start timing stall repetitions after warning complete Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 10/18] srcutiny: Mark read-side data races Paul E. McKenney 2021-07-29 8:23 ` Boqun Feng 2021-07-29 13:36 ` Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 11/18] rcu: Mark lockless ->qsmask read in rcu_check_boost_fail() Paul E. McKenney 2021-07-29 8:54 ` Boqun Feng 2021-07-29 14:03 ` Paul E. McKenney 2021-07-30 2:28 ` Boqun Feng 2021-07-30 3:26 ` Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 12/18] rcu: Make rcu_gp_init() and rcu_gp_fqs_loop noinline to conserve stack Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 13/18] rcu: Remove trailing spaces and tabs Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 14/18] rcu: Mark accesses in tree_stall.h Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 15/18] rcu: Remove useless "ret" update in rcu_gp_fqs_loop() Paul E. McKenney 2021-08-03 16:48 ` Joe Perches 2021-08-03 17:10 ` Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 16/18] rcu: Use per_cpu_ptr to get the pointer of per_cpu variable Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 17/18] rcu: Explain why rcu_all_qs() is a stub in preemptible TREE RCU Paul E. McKenney 2021-07-21 20:21 ` [PATCH rcu 18/18] rcu: Print human-readable message for schedule() in RCU reader Paul E. McKenney
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=20210721202127.2129660-1-paulmck@kernel.org \ --to=paulmck@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=dhowells@redhat.com \ --cc=edumazet@google.com \ --cc=fweisbec@gmail.com \ --cc=jiangshanlai@gmail.com \ --cc=joel@joelfernandes.org \ --cc=josh@joshtriplett.org \ --cc=kernel-team@fb.com \ --cc=linux-kernel@vger.kernel.org \ --cc=mathieu.desnoyers@efficios.com \ --cc=mingo@kernel.org \ --cc=oleg@redhat.com \ --cc=peterz@infradead.org \ --cc=rcu@vger.kernel.org \ --cc=rostedt@goodmis.org \ --cc=tglx@linutronix.de \ --cc=yanfei.xu@windriver.com \ /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: linkBe 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).