From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACF41C433EF for ; Mon, 20 Jun 2022 23:00:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345911AbiFTXAF (ORCPT ); Mon, 20 Jun 2022 19:00:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345964AbiFTW7p (ORCPT ); Mon, 20 Jun 2022 18:59:45 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6434193C2; Mon, 20 Jun 2022 15:58:20 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 710AC6148E; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6AD3C3411B; Mon, 20 Jun 2022 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765899; bh=3kRnOesp5eHqSXcFmfKltAxDRwYQZS7t9KnwZqz15l0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EZ4fyvKQLKYSFqTRA/JFqzIyiYNlNFuCi/2iEnBE89OxhaPxKUr8/T20fLTpW8tXK edfvPeiaNXAtZ/+NkH3Gk+Z/zkEWGfYK9451AMiM094tpDz5ve0ca9hPZ52NptbNPK PJ+rO0UST/0X9Sxp2UtU5tCYerbJ+0G1EFkW5hgI926N0KB8jZAeECd7XbVUAAn2PB bhmutORkSUIkEeXo1N6bhg0BrO6UnEajArIj0oa4CyHGj92ZXdzeBNsIeiCLqnFkPM BbNwR8XPt8a1xLPtklUSwNmapigdqXtooVUx50s6GyFVldusflkt7S/som9GhMNPQM vIPRsovc1Bmdg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 93A505C05B9; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH rcu 01/12] torture: Make kvm-remote.sh announce which system is being waited on Date: Mon, 20 Jun 2022 15:58:06 -0700 Message-Id: <20220620225817.3843106-1-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" If a remote system fails in certain ways, for example, if it is rebooted without removing the contents of the /tmp directory, its remote.run file never will be removed and the kvm-remote.sh script will loop waiting forever. The manual workaround for this (hopefully!) rare event is to manually remove the file, which will cause the results up to the reboot to be collected and evaluated. Unfortunately, to work out which system is holding things up, the user must refer to the name of the last system whose results were collected, then look up the name of the next system in sequence, then manually remove the remote.run file. Even more unfortunately, this procedure can be fooled in runs where each system handles more than one batch should a given system take longer than expected, causing the systems to be handled out of order. This commit therefore causes kvm-remote.sh to print out the name of the system it will wait on next, allowing the user to refer directly to that name. Making the kvm-remote.sh script automatically handle unscheduled termination of the qemu processes is left as future work. Quite possibly deep future work. Signed-off-by: Paul E. McKenney --- tools/testing/selftests/rcutorture/bin/kvm-remote.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/rcutorture/bin/kvm-remote.sh b/tools/t= esting/selftests/rcutorture/bin/kvm-remote.sh index 0ff59bd8b640d..9f0a5d5ff2ddc 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm-remote.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm-remote.sh @@ -262,6 +262,7 @@ echo All batches started. `date` | tee -a "$oldrun/remo= te-log" # Wait for all remaining scenarios to complete and collect results. for i in $systems do + echo " ---" Waiting for $i `date` | tee -a "$oldrun/remote-log" while checkremotefile "$i" "$resdir/$ds/remote.run" do sleep 30 --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA2D7C43334 for ; Mon, 20 Jun 2022 23:00:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345929AbiFTXAa (ORCPT ); Mon, 20 Jun 2022 19:00:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345985AbiFTW7r (ORCPT ); Mon, 20 Jun 2022 18:59:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E61C2193ED; Mon, 20 Jun 2022 15:58:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 3C20FB81648; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC4A6C3411C; Mon, 20 Jun 2022 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765899; bh=QB+6LQTkN+uqZYbqwmaKGD7m8QpRVVwgyBZwUwDHoxw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OO54a6KIBy4pG/XzhjsMPffHPMlq5+fx7rjTjbeglGcTg02CKD0LKom2MH7EwFE2L 50/WgmVWiPOqlELWWdoSDVkOM2rQPyQBzbrWm0WrrN5tCfr/UgBQvwVuwi+fR3sxxv 8IdRGGgf2TXx2fn8H14yeWf8S2bd8Ir56HaqxlewHmn0DCdsnWtLJm98O19/wlKs3l VSJVRbHjn6B3Mt5TmZojKji26KioaMBlYE1QAV2r6iNdJttTRnblhQfOFvCZG3S5IB 2eBIA9zeWUiNM3NINHQMUzV/A968dflvFdXqIGfZiNF8HwJedGSd6Qekr0ynPG2JPE KIFRuW3whfM0g== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 979055C05C8; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Anna-Maria Behnsen , Benedikt Spranger , "Paul E . McKenney" Subject: [PATCH rcu 02/12] rcu/torture: Change order of warning and trace dump Date: Mon, 20 Jun 2022 15:58:07 -0700 Message-Id: <20220620225817.3843106-2-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Anna-Maria Behnsen Dumping a big ftrace buffer could lead to a RCU stall. So there is the ftrace buffer and the stall information which needs to be printed. When there is additionaly a WARN_ON() which describes the reason for the ftrace buffer dump and the WARN_ON() is executed _after_ ftrace buffer dump, the information get lost in the middle of the RCU stall information. Therefore print WARN_ON() message before dumping the ftrace buffer in rcu_torture_writer(). [ paulmck: Add tracing_off() to avoid cruft from WARN(). ] Signed-off-by: Anna-Maria Behnsen Reviewed-by: Benedikt Spranger Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 7120165a93426..3032dd7c7ad35 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -1321,8 +1321,9 @@ rcu_torture_writer(void *arg) if (list_empty(&rcu_tortures[i].rtort_free) && rcu_access_pointer(rcu_torture_current) !=3D &rcu_tortures[i]) { - rcu_ftrace_dump(DUMP_ALL); + tracing_off(); WARN(1, "%s: rtort_pipe_count: %d\n", __func__, rcu_tortures[i].rtort= _pipe_count); + rcu_ftrace_dump(DUMP_ALL); } if (stutter_waited) sched_set_normal(current, oldnice); --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 433CEC433EF for ; Mon, 20 Jun 2022 23:00:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345723AbiFTXAH (ORCPT ); Mon, 20 Jun 2022 19:00:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60272 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345967AbiFTW7p (ORCPT ); Mon, 20 Jun 2022 18:59:45 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF84E193C3; Mon, 20 Jun 2022 15:58:20 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8348A614A0; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE329C341C7; Mon, 20 Jun 2022 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765899; bh=7T945rjfPE1roz9rM5sVM/SGODfonE0cS+rIR4bWmLY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mWJoZX9jcu5Z+1c1WVJcgazXQpf+FgL9oxi1k/411+NYjDCIcDvA+CEP922vPjHOI hqSwfWV4pzPVne9VEdpLWhs3U09Pl315fq7BLBHwLJzLp4Ste4oXq8EyILYN/UTvc4 qTCn/1g+TPuHQ+gYw0ZhCEtqnfU+SyLvhmntUX1OPSJ6fnK0uChWM3lu+JDFQ73C58 cNMNVSuB4UfMbEAp7hgzam1Xb4GI34l3j5ogOfXactyKIpGmNzibCH8PtQPWcfICE1 7rONs9CG/pY1Rl1eNHS+JZtiWLENehGA5a2Eff2yruQZ/DBekE1zaC6Ezp9eOp5eBu JdQZ4nTCiMpgQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 9991F5C0A15; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH rcu 03/12] rcutorture: Simplify rcu_torture_read_exit_child() loop Date: Mon, 20 Jun 2022 15:58:08 -0700 Message-Id: <20220620225817.3843106-3-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The existing loop has an implicit manual loop that obscures the flow and requires an extra control variable. This commit makes this implicit loop explicit, thus saving several lines of code. Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 47 ++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 3032dd7c7ad35..9273264772b88 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2874,7 +2874,6 @@ static int rcu_torture_read_exit_child(void *trsp_in) // Parent kthread which creates and destroys read-exit child kthreads. static int rcu_torture_read_exit(void *unused) { - int count =3D 0; bool errexit =3D false; int i; struct task_struct *tsp; @@ -2886,34 +2885,28 @@ static int rcu_torture_read_exit(void *unused) =20 // Each pass through this loop does one read-exit episode. do { - if (++count > read_exit_burst) { - VERBOSE_TOROUT_STRING("rcu_torture_read_exit: End of episode"); - rcu_barrier(); // Wait for task_struct free, avoid OOM. - for (i =3D 0; i < read_exit_delay; i++) { - schedule_timeout_uninterruptible(HZ); - if (READ_ONCE(read_exit_child_stop)) - break; + VERBOSE_TOROUT_STRING("rcu_torture_read_exit: Start of episode"); + for (i =3D 0; i < read_exit_burst; i++) { + if (READ_ONCE(read_exit_child_stop)) + break; + stutter_wait("rcu_torture_read_exit"); + // Spawn child. + tsp =3D kthread_run(rcu_torture_read_exit_child, + &trs, "%s", "rcu_torture_read_exit_child"); + if (IS_ERR(tsp)) { + TOROUT_ERRSTRING("out of memory"); + errexit =3D true; + break; } - if (!READ_ONCE(read_exit_child_stop)) - VERBOSE_TOROUT_STRING("rcu_torture_read_exit: Start of episode"); - count =3D 0; - } - if (READ_ONCE(read_exit_child_stop)) - break; - // Spawn child. - tsp =3D kthread_run(rcu_torture_read_exit_child, - &trs, "%s", - "rcu_torture_read_exit_child"); - if (IS_ERR(tsp)) { - TOROUT_ERRSTRING("out of memory"); - errexit =3D true; - tsp =3D NULL; - break; + cond_resched(); + kthread_stop(tsp); + n_read_exits ++; } - cond_resched(); - kthread_stop(tsp); - n_read_exits ++; - stutter_wait("rcu_torture_read_exit"); + VERBOSE_TOROUT_STRING("rcu_torture_read_exit: End of episode"); + rcu_barrier(); // Wait for task_struct free, avoid OOM. + i =3D 0; + for (; !errexit && !READ_ONCE(read_exit_child_stop) && i < read_exit_del= ay; i++) + schedule_timeout_uninterruptible(HZ); } while (!errexit && !READ_ONCE(read_exit_child_stop)); =20 // Clean up and exit. --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C3D6C433EF for ; Mon, 20 Jun 2022 23:00:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346459AbiFTXA5 (ORCPT ); Mon, 20 Jun 2022 19:00:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345994AbiFTW7r (ORCPT ); Mon, 20 Jun 2022 18:59:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E625C193F7; Mon, 20 Jun 2022 15:58:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 407FBB81649; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D9DF1C341C4; Mon, 20 Jun 2022 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765899; bh=W6kG3hpmkYco8VzH89bxd88TU98qz+QQY538iEjM9F4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AzwE355p7egz1mBjAAA04X4sCrzdl8xW2Sm/0hFWPYXzSyltLiqhwwgU1/2XeI327 NQ0xmmGmLPC5C/5acAeK1YGhTK8NUCtw4a1HLkXN98jRtEsydb60mTQrWplkDX0xCz jvd0aw3aRfiErxTeR9ECLJbt6802pk9dJbccNI4aFIZl+qmRMBoAjbKLMFjdZa2dXb Rt5jvWydWvsYmDG4nFXt/bzmpJ4U/+39IssL+sQd6XqubjbxNVDYK/k/PL7Rcz+NGt dcp90ceuHn/T9rz9UAnuCple4tZLLjMfjPkX4V8ltkvBHtAZdFzv0bCPJC0e6oRu6j ts9lund7bmmLg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 9B87C5C0A33; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Zqiang , "Paul E . McKenney" Subject: [PATCH rcu 04/12] rcutorture: Fix memory leak in rcu_test_debug_objects() Date: Mon, 20 Jun 2022 15:58:09 -0700 Message-Id: <20220620225817.3843106-4-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Zqiang The kernel memory leak detector located the following: unreferenced object 0xffff95d941135b50 (size 16): comm "swapper/0", pid 1, jiffies 4294667610 (age 1367.451s) hex dump (first 16 bytes): f0 c6 c2 bd d9 95 ff ff 00 00 00 00 00 00 00 00 ................ backtrace: [<00000000bc81d9b1>] kmem_cache_alloc_trace+0x2f6/0x500 [<00000000d28be229>] rcu_torture_init+0x1235/0x1354 [<0000000032c3acd9>] do_one_initcall+0x51/0x210 [<000000003c117727>] kernel_init_freeable+0x205/0x259 [<000000003961f965>] kernel_init+0x1a/0x120 [<000000001998f890>] ret_from_fork+0x22/0x30 This is caused by the rcu_test_debug_objects() function allocating an rcu_head structure, then failing to free it. This commit therefore adds the needed kfree() after the last use of this structure. Signed-off-by: Zqiang Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 9273264772b88..613711b8242b9 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -3116,6 +3116,7 @@ static void rcu_test_debug_objects(void) pr_alert("%s: WARN: Duplicate call_rcu() test complete.\n", KBUILD_MODNAM= E); destroy_rcu_head_on_stack(&rh1); destroy_rcu_head_on_stack(&rh2); + kfree(rhp); #else /* #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD */ pr_alert("%s: !CONFIG_DEBUG_OBJECTS_RCU_HEAD, not testing duplicate call_= rcu()\n", KBUILD_MODNAME); #endif /* #else #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD */ --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 34DB2C43334 for ; Mon, 20 Jun 2022 23:00:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345251AbiFTXAN (ORCPT ); Mon, 20 Jun 2022 19:00:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345971AbiFTW7q (ORCPT ); Mon, 20 Jun 2022 18:59:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04D4E193CB; Mon, 20 Jun 2022 15:58:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 8AEBB61386; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E24B5C341C5; Mon, 20 Jun 2022 22:58:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765899; bh=ARfTLraENreDI3aXHqN2Q2vPqJl9ICDQOObYFORuh0U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FlxO9EW5HDLBE0BH3Q5VepI+4aXq9hvoanw4hkLk67LdvQH+911nRKKYTzQeNIDEW WyucsW/A2MWeFHss0c+yqwM+6XWPPKHSJUpuIZ1ga5D9HwQi3DZoIbxnpT04iB2Kl4 2OMojBvLIEw1uMvkEQWJiy7HhlrktmdBz3dq9sO0CZ6YyNUtQQl4vnNE91SIaEMPqe 2rPGcSDfyHNPfJGLK23Fs8hTiESkoJvbO3up9rahfDB3RYGt5WhaW/X3MW9IN3NWtv F6Kemyx31KEnNkuG21Px+73PC/uEylwlB3RLzzMuz81jNvyVuKrZuExarqWBaQD4Hz 8hv+EflaiqfGg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 9DB985C0ADC; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH rcu 05/12] torture: Adjust to again produce debugging information Date: Mon, 20 Jun 2022 15:58:10 -0700 Message-Id: <20220620225817.3843106-5-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" A recent change to the DEBUG_INFO Kconfig option means that simply adding CONFIG_DEBUG_INFO=3Dy to the .config file and running "make oldconfig" no longer works. It is instead necessary to add CONFIG_DEBUG_INFO_NONE=3Dn and (for example) CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=3Dy. This combination will then result in CONFIG_DEBUG_INFO being selected. This commit therefore updates the Kconfig options produced in response to the kvm.sh --gdb, --kasan, and --kcsan Kconfig options. Fixes: f9b3cd245784 ("Kconfig.debug: make DEBUG_INFO selectable from a choi= ce") Signed-off-by: Paul E. McKenney --- tools/testing/selftests/rcutorture/bin/kvm.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/= selftests/rcutorture/bin/kvm.sh index 263e16aeca0e4..6c734818a8757 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm.sh @@ -164,7 +164,7 @@ do shift ;; --gdb) - TORTURE_KCONFIG_GDB_ARG=3D"CONFIG_DEBUG_INFO=3Dy"; export TORTURE_KCONFI= G_GDB_ARG + TORTURE_KCONFIG_GDB_ARG=3D"CONFIG_DEBUG_INFO_NONE=3Dn CONFIG_DEBUG_INFO_= DWARF_TOOLCHAIN_DEFAULT=3Dy"; export TORTURE_KCONFIG_GDB_ARG TORTURE_BOOT_GDB_ARG=3D"nokaslr"; export TORTURE_BOOT_GDB_ARG TORTURE_QEMU_GDB_ARG=3D"-s -S"; export TORTURE_QEMU_GDB_ARG ;; @@ -180,7 +180,7 @@ do shift ;; --kasan) - TORTURE_KCONFIG_KASAN_ARG=3D"CONFIG_DEBUG_INFO=3Dy CONFIG_KASAN=3Dy"; ex= port TORTURE_KCONFIG_KASAN_ARG + TORTURE_KCONFIG_KASAN_ARG=3D"CONFIG_DEBUG_INFO_NONE=3Dn CONFIG_DEBUG_INF= O_DWARF_TOOLCHAIN_DEFAULT=3Dy CONFIG_KASAN=3Dy"; export TORTURE_KCONFIG_KAS= AN_ARG if test -n "$torture_qemu_mem_default" then TORTURE_QEMU_MEM=3D2G @@ -192,7 +192,7 @@ do shift ;; --kcsan) - TORTURE_KCONFIG_KCSAN_ARG=3D"CONFIG_DEBUG_INFO=3Dy CONFIG_KCSAN=3Dy CONF= IG_KCSAN_STRICT=3Dy CONFIG_KCSAN_REPORT_ONCE_IN_MS=3D100000 CONFIG_KCSAN_VE= RBOSE=3Dy CONFIG_DEBUG_LOCK_ALLOC=3Dy CONFIG_PROVE_LOCKING=3Dy"; export TOR= TURE_KCONFIG_KCSAN_ARG + TORTURE_KCONFIG_KCSAN_ARG=3D"CONFIG_DEBUG_INFO_NONE=3Dn CONFIG_DEBUG_INF= O_DWARF_TOOLCHAIN_DEFAULT=3Dy CONFIG_KCSAN=3Dy CONFIG_KCSAN_STRICT=3Dy CONF= IG_KCSAN_REPORT_ONCE_IN_MS=3D100000 CONFIG_KCSAN_VERBOSE=3Dy CONFIG_DEBUG_L= OCK_ALLOC=3Dy CONFIG_PROVE_LOCKING=3Dy"; export TORTURE_KCONFIG_KCSAN_ARG ;; --kmake-arg|--kmake-args) checkarg --kmake-arg "(kernel make arguments)" $# "$2" '.*' '^error$' --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 27E20C433EF for ; Mon, 20 Jun 2022 23:00:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346443AbiFTXAx (ORCPT ); Mon, 20 Jun 2022 19:00:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346004AbiFTW7r (ORCPT ); Mon, 20 Jun 2022 18:59:47 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5382319C05; Mon, 20 Jun 2022 15:58:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id B956DB81647; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46C05C341D2; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=6+3iMWSppedO1jRXS9dt0Th+Hfq5H3+RDDhYWxtDlrE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LNJkwZ2lpWAx9wvbrHujDxkaywKCOunJa97NeNuzpq+nAu6v6fCh5AvkqOQeXlj9q T+RArij0jQ6468unKZRDV0ayHljYSGbD+1BLSay6ok6ldeenfxgRwmWu+pPq/u8eQ7 DUibju7MeGHwj2P5UujgD6eNfR/KXXPiIFBtsK9r+FqHZMWPAItZH4HWK7oms7vU2F ypbxnq/NKA+Ef8TqbMKEoeT+ddm61JN/FopzYiwBxhV95iU1tRb1d0v3fIEMaSyfCj 7tTVbrgod4HJmeTaCIV9l+j2I1Jw3Q+EIfCrE949hBN7Ny3ppwWSM77Gm7eRomWDW4 LkEbNjX3/eeNg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 9F8BA5C0B06; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH rcu 06/12] rcutorture: Make failure indication note reader-batch overflow Date: Mon, 20 Jun 2022 15:58:11 -0700 Message-Id: <20220620225817.3843106-6-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The loop scanning the pipesummary[] array currently skips the last element, which means that the diagnostics ignore those rarest of situations, namely where some readers persist across more than ten grace periods, but all other readers avoid spanning a full grace period. This commit therefore adjusts the scan to include the last element of this array. Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 613711b8242b9..64ad5305829b6 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -1869,7 +1869,7 @@ rcu_torture_stats_print(void) batchsummary[i] +=3D READ_ONCE(per_cpu(rcu_torture_batch, cpu)[i]); } } - for (i =3D RCU_TORTURE_PIPE_LEN - 1; i >=3D 0; i--) { + for (i =3D RCU_TORTURE_PIPE_LEN; i >=3D 0; i--) { if (pipesummary[i] !=3D 0) break; } --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92063C43334 for ; Mon, 20 Jun 2022 23:00:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346188AbiFTXAh (ORCPT ); Mon, 20 Jun 2022 19:00:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346008AbiFTW7s (ORCPT ); Mon, 20 Jun 2022 18:59:48 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5394819C16; Mon, 20 Jun 2022 15:58:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C694DB8164C; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A404C341CF; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=lkXPYbCU6J1sMOYOFTGUNwP6b8VX52iPPeaB18M4sJs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K+NV2xHvgTWjzhRFD6v8kuYd+nTk5kr3p1xxBKsFK530HaLi/h3o4eqmzPETv3Qfi 9tOOS/DN8WI4N88fVjdF7Ow48RAOEl8IPfpGhhrm9AY+AQxVK2gpE2TpkdXCZK6DA7 TWf20BsYspTzE914RXl1ncX9qjOq8xklNLLvi5FO1317rRz+7weDcc6/JTN+xPVUej VkMqiKPwHFTp+/U4XGnEO6gG9IDLWB9TH0sG6A8Ans/2q1ucmBh23QnnXKHO06pOYH XTwyoRoLstOOaaIcY4+hVk954GGpormi4tqSoac4yt0tUtlPdNdY40iTS1Dv1TqQYg NnfFc/NKIQHYg== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A19455C0BCC; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Zqiang , "Paul E . McKenney" Subject: [PATCH rcu 07/12] rcu/rcuscale: Fix smp_processor_id()-in-preemptible warnings Date: Mon, 20 Jun 2022 15:58:12 -0700 Message-Id: <20220620225817.3843106-7-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Zqiang Systems built with CONFIG_DEBUG_PREEMPT=3Dy can trigger the following BUG while running the rcuscale performance test: BUG: using smp_processor_id() in preemptible [00000000] code: rcu_scale_wri= te/69 CPU: 0 PID: 66 Comm: rcu_scale_write Not tainted 5.18.0-rc7-next-20220517-y= octodev-standard+ caller is debug_smp_processor_id+0x17/0x20 Call Trace: dump_stack_lvl+0x49/0x5e dump_stack+0x10/0x12 check_preemption_disabled+0xdf/0xf0 debug_smp_processor_id+0x17/0x20 rcu_scale_writer+0x2b5/0x580 kthread+0x177/0x1b0 ret_from_fork+0x22/0x30 Reproduction method: runqemu kvm slirp nographic qemuparams=3D"-m 4096 -smp 8" bootparams=3D"iso= lcpus=3D2,3 nohz_full=3D2,3 rcu_nocbs=3D2,3 rcutree.dump_tree=3D1 rcuscale.shutdown=3Df= alse rcuscale.gp_async=3Dtrue" -d The problem is that the rcu_scale_writer() kthreads fail to set the PF_NO_SETAFFINITY flags, which causes is_percpu_thread() to assume that the kthread's affinity might change at any time, thus the BUG noted above. This commit therefore causes rcu_scale_writer() to set PF_NO_SETAFFINITY in its kthread's ->flags field, thus preventing this BUG. Signed-off-by: Zqiang Signed-off-by: Paul E. McKenney --- kernel/rcu/rcuscale.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/rcu/rcuscale.c b/kernel/rcu/rcuscale.c index 277a5bfb37d48..3ef02d4a81085 100644 --- a/kernel/rcu/rcuscale.c +++ b/kernel/rcu/rcuscale.c @@ -419,6 +419,7 @@ rcu_scale_writer(void *arg) VERBOSE_SCALEOUT_STRING("rcu_scale_writer task started"); WARN_ON(!wdpp); set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids)); + current->flags |=3D PF_NO_SETAFFINITY; sched_set_fifo_low(current); =20 if (holdoff) --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A3B0C433EF for ; Mon, 20 Jun 2022 23:00:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245220AbiFTXAQ (ORCPT ); Mon, 20 Jun 2022 19:00:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345973AbiFTW7q (ORCPT ); Mon, 20 Jun 2022 18:59:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7BFB3193D3; Mon, 20 Jun 2022 15:58:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 07564614A1; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 39148C341CE; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=mZiTOBDcqD704lMtn9ef+smf6JxOTN0xNvMG6GVm+gQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pdyRVY6Gx7syR9u3gBHnFgnVLZX4lTnhJvR/8/DhawivveNWjnPPHLjM/3UcsCJFl n8+uaVwbsqPe4xS93AeCIM73DJ4E/Mj06QKGSOpl+SLAXKQCUNJ65Q51W+gQEeV1UG M8zAIUpYqEhuPkJo4OV1eMckhR5rXK+4J1C/wwqqFnsr+AE0EEVNs6IJP+9ZLO+sLI gMthiBSYBMrq04o/HL94POibots/38XEWhdIjVh6CcJxh3jSsOplYWrmZmSn1NOIqP 4ScpI2saB+Iwd5pIUMlVuBe4rpyQ25piljzxS7nmZKtFMyG9McVVmYBUm4hBiUMxB5 jubzQEPWH0qzw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A36725C0CCE; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH rcu 08/12] torture: Create kvm-check-branches.sh output in proper location Date: Mon, 20 Jun 2022 15:58:13 -0700 Message-Id: <20220620225817.3843106-8-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Currently, kvm-check-branches.sh causes each kvm.sh invocation create a separate date-stamped directory, then after that invocation completes, moves it into the *-group/NNNN directory. This works, but makes it more difficult to monitor an ongoing run. This commit therefore uses the kvm.sh --datestamp argument to make kvm.sh put the output in the right place to start with, and also dispenses with the additional level of datestamping. (Those wanting datestamps can find them in the log files.) Signed-off-by: Paul E. McKenney --- .../selftests/rcutorture/bin/kvm-check-branches.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/tools/testing/selftests/rcutorture/bin/kvm-check-branches.sh b= /tools/testing/selftests/rcutorture/bin/kvm-check-branches.sh index f17000a2ccf1f..ed0ec7f0927e7 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm-check-branches.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm-check-branches.sh @@ -35,7 +35,7 @@ then exit 1 fi =20 -# Remember where we started so that we can get back and the end. +# Remember where we started so that we can get back at the end. curcommit=3D"`git status | head -1 | awk '{ print $NF }'`" =20 nfail=3D0 @@ -73,15 +73,10 @@ do # Test the specified commit. git checkout $i > $resdir/$ds/$idir/git-checkout.out 2>&1 echo git checkout return code: $? "(Commit $ntry: $i)" - kvm.sh --allcpus --duration 3 --trust-make > $resdir/$ds/$idir/kvm.sh.ou= t 2>&1 + kvm.sh --allcpus --duration 3 --trust-make --datestamp "$ds/$idir" > $re= sdir/$ds/$idir/kvm.sh.out 2>&1 ret=3D$? echo kvm.sh return code $ret for commit $i from branch $gitbr - - # Move the build products to their resting place. - runresdir=3D"`grep -m 1 '^Results directory:' < $resdir/$ds/$idir/kvm.sh= .out | sed -e 's/^Results directory://'`" - mv $runresdir $resdir/$ds/$idir - rrd=3D"`echo $runresdir | sed -e 's,^.*/,,'`" - echo Run results: $resdir/$ds/$idir/$rrd + echo Run results: $resdir/$ds/$idir if test "$ret" -ne 0 then # Failure, so leave all evidence intact. --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1191C43334 for ; Mon, 20 Jun 2022 23:00:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346068AbiFTXAp (ORCPT ); Mon, 20 Jun 2022 19:00:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346024AbiFTW7s (ORCPT ); Mon, 20 Jun 2022 18:59:48 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36EA9193FE; Mon, 20 Jun 2022 15:58:23 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C76A7B8164D; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C16BC341D3; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=ndfRpTTKTYzN9518AyVhDGVdAAXc4cxYGW6C8IJNndY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kyWnO3nIrl1fziSzbt+PKFDLAugvUKcC3qn3ZIYJ5eQApUnWy1xqzbdvjH/Z0iN4b txqKxtoWnnyfCTG6TdecfWzDqdsfOxbra7E1ylzh+opqkMLQElyJvq06bN1GgDnknh b4/00CjPZmSUWh1yLDsTWJ+jnuSLVF+Iri2yRXns96Kj4l/IIa72BumFvy2BTLm5t4 AwM+FhScecn5w30eXeGqSRiFtFQ685k9kqQWutGfe76NgPfBTQ2nODqKHLL4Syk7wn k2LVXAbMjKIUyQoU2bkjmT7yYiZkT2qs80PqdHCnGV+92a4qS0ue4UyroS626P8vAa fyWusP1fxImFw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A569B5C0D1B; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Frederic Weisbecker , "Paul E . McKenney" Subject: [PATCH rcu 09/12] rcutorture: Fix ksoftirqd boosting timing and iteration Date: Mon, 20 Jun 2022 15:58:14 -0700 Message-Id: <20220620225817.3843106-9-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Frederic Weisbecker The RCU priority boosting can fail in two situations: 1) If (nr_cpus=3D > maxcpus=3D), which means if the total number of CPUs is higher than those brought online at boot, then torture_onoff() may later bring up CPUs that weren't online on boot. Now since rcutorture initialization only boosts the ksoftirqds of the CPUs that have been set online on boot, the CPUs later set online by torture_onoff won't benefit from the boost, making RCU priority boosting fail. 2) The ksoftirqd kthreads are boosted after the creation of rcu_torture_boost() kthreads, which opens a window large enough for these rcu_torture_boost() kthreads to wait (despite running at FIFO priority) for ksoftirqds that are still running at SCHED_NORMAL priority. The issues can trigger for example with: ./kvm.sh --configs TREE01 --kconfig "CONFIG_RCU_BOOST=3Dy" [ 34.968561] rcu-torture: !!! [ 34.968627] ------------[ cut here ]------------ [ 35.014054] WARNING: CPU: 4 PID: 114 at kernel/rcu/rcutorture.c:1979 rc= u_torture_stats_print+0x5ad/0x610 [ 35.052043] Modules linked in: [ 35.069138] CPU: 4 PID: 114 Comm: rcu_torture_sta Not tainted 5.18.0-rc= 1 #1 [ 35.096424] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS re= l-1.14.0-0-g155821a-rebuilt.opensuse.org 04/01/2014 [ 35.154570] RIP: 0010:rcu_torture_stats_print+0x5ad/0x610 [ 35.198527] Code: 63 1b 02 00 74 02 0f 0b 48 83 3d 35 63 1b 02 00 74 02= 0f 0b 48 83 3d 21 63 1b 02 00 74 02 0f 0b 48 83 3d 0d 63 1b 02 00 74 02 <0= f> 0b 83 eb 01 0f 8e ba fc ff ff 0f 0b e9 b3 fc ff f82 [ 37.251049] RSP: 0000:ffffa92a0050bdf8 EFLAGS: 00010202 [ 37.277320] rcu: De-offloading 8 [ 37.290367] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000= 000001 [ 37.290387] RDX: 0000000000000000 RSI: 00000000ffffbfff RDI: 00000000ff= ffffff [ 37.290398] RBP: 000000000000007b R08: 0000000000000000 R09: c0000000ff= ffbfff [ 37.290407] R10: 000000000000002a R11: ffffa92a0050bc18 R12: ffffa92a00= 50be20 [ 37.290417] R13: ffffa92a0050be78 R14: 0000000000000000 R15: 0000000000= 01bea0 [ 37.290427] FS: 0000000000000000(0000) GS:ffff96045eb00000(0000) knlGS= :0000000000000000 [ 37.290448] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 37.290460] CR2: 0000000000000000 CR3: 000000001dc0c000 CR4: 0000000000= 0006e0 [ 37.290470] Call Trace: [ 37.295049] [ 37.295065] ? preempt_count_add+0x63/0x90 [ 37.295095] ? _raw_spin_lock_irqsave+0x12/0x40 [ 37.295125] ? rcu_torture_stats_print+0x610/0x610 [ 37.295143] rcu_torture_stats+0x29/0x70 [ 37.295160] kthread+0xe3/0x110 [ 37.295176] ? kthread_complete_and_exit+0x20/0x20 [ 37.295193] ret_from_fork+0x22/0x30 [ 37.295218] Fix this with boosting the ksoftirqds kthreads from the boosting hotplug callback itself and before the boosting kthreads are created. Fixes: ea6d962e80b6 ("rcutorture: Judge RCU priority boosting on grace peri= ods, not callbacks") Signed-off-by: Frederic Weisbecker Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 64ad5305829b6..b896987c21122 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2076,6 +2076,19 @@ static int rcutorture_booster_init(unsigned int cpu) if (boost_tasks[cpu] !=3D NULL) return 0; /* Already created, nothing more to do. */ =20 + // Testing RCU priority boosting requires rcutorture do + // some serious abuse. Counter this by running ksoftirqd + // at higher priority. + if (IS_BUILTIN(CONFIG_RCU_TORTURE_TEST)) { + struct sched_param sp; + struct task_struct *t; + + t =3D per_cpu(ksoftirqd, cpu); + WARN_ON_ONCE(!t); + sp.sched_priority =3D 2; + sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); + } + /* Don't allow time recalculation while creating a new task. */ mutex_lock(&boost_mutex); rcu_torture_disable_rt_throttle(); @@ -3324,21 +3337,6 @@ rcu_torture_init(void) rcutor_hp =3D firsterr; if (torture_init_error(firsterr)) goto unwind; - - // Testing RCU priority boosting requires rcutorture do - // some serious abuse. Counter this by running ksoftirqd - // at higher priority. - if (IS_BUILTIN(CONFIG_RCU_TORTURE_TEST)) { - for_each_online_cpu(cpu) { - struct sched_param sp; - struct task_struct *t; - - t =3D per_cpu(ksoftirqd, cpu); - WARN_ON_ONCE(!t); - sp.sched_priority =3D 2; - sched_setscheduler_nocheck(t, SCHED_FIFO, &sp); - } - } } shutdown_jiffies =3D jiffies + shutdown_secs * HZ; firsterr =3D torture_shutdown_init(shutdown_secs, rcu_torture_cleanup); --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83895C43334 for ; Mon, 20 Jun 2022 23:00:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346038AbiFTXAT (ORCPT ); Mon, 20 Jun 2022 19:00:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345977AbiFTW7q (ORCPT ); Mon, 20 Jun 2022 18:59:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7FFF2193E6; Mon, 20 Jun 2022 15:58:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 1AD77614AE; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42E72C341D1; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=74byXg/X07uQ4DU6Q0CIxAcWhcyYDKfeDLVVCySMpak=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=usjOv8K9QZ8juaI5Onfy9js5W/9zJUYLO2N7VAqn1kJVZRyOgScsJIgx2b/tZA/ON 8jXNg0Jemfb+r/oPncPA2IZmCov3rbVVDGp9qsnUJxVMXytEo5hXEiLmTBGYEZbtHx 2YhEE1G9yV25Uk50dlozXwSH0+GLjXvGUiRTids1XbZN3JSzUEAdpM/hpyn8NOWrSE LUpcCuGNl3yxUo736ZVXrSy/vPa1esBs84YBcmw5nxFUzcKrg21G70J8mEEFzrnoYQ bHc+ifUn+jLO3zqRW/mr11/yABFwaFQv6s2XG5kdSprPrUG0RoCOF0sifgh+WZjuH6 6lR1zHqcfhp3A== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A73D05C0DAC; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Li Qiong , "Paul E . McKenney" Subject: [PATCH rcu 10/12] rcutorture: Handle failure of memory allocation functions Date: Mon, 20 Jun 2022 15:58:15 -0700 Message-Id: <20220620225817.3843106-10-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Li Qiong This commit adds warnings for allocation failure during the mem_dump_obj() tests. It also terminates these tests upon such failure. Signed-off-by: Li Qiong Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index b896987c21122..e2db5d6beabaa 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -1991,7 +1991,13 @@ static void rcu_torture_mem_dump_obj(void) static int z; =20 kcp =3D kmem_cache_create("rcuscale", 136, 8, SLAB_STORE_USER, NULL); + if (WARN_ON_ONCE(!kcp)) + return; rhp =3D kmem_cache_alloc(kcp, GFP_KERNEL); + if (WARN_ON_ONCE(!rhp)) { + kmem_cache_destroy(kcp); + return; + } pr_alert("mem_dump_obj() slab test: rcu_torture_stats =3D %px, &rhp =3D %= px, rhp =3D %px, &z =3D %px\n", stats_task, &rhp, rhp, &z); pr_alert("mem_dump_obj(ZERO_SIZE_PTR):"); mem_dump_obj(ZERO_SIZE_PTR); @@ -2008,6 +2014,8 @@ static void rcu_torture_mem_dump_obj(void) kmem_cache_free(kcp, rhp); kmem_cache_destroy(kcp); rhp =3D kmalloc(sizeof(*rhp), GFP_KERNEL); + if (WARN_ON_ONCE(!rhp)) + return; pr_alert("mem_dump_obj() kmalloc test: rcu_torture_stats =3D %px, &rhp = =3D %px, rhp =3D %px\n", stats_task, &rhp, rhp); pr_alert("mem_dump_obj(kmalloc %px):", rhp); mem_dump_obj(rhp); @@ -2015,6 +2023,8 @@ static void rcu_torture_mem_dump_obj(void) mem_dump_obj(&rhp->func); kfree(rhp); rhp =3D vmalloc(4096); + if (WARN_ON_ONCE(!rhp)) + return; pr_alert("mem_dump_obj() vmalloc test: rcu_torture_stats =3D %px, &rhp = =3D %px, rhp =3D %px\n", stats_task, &rhp, rhp); pr_alert("mem_dump_obj(vmalloc %px):", rhp); mem_dump_obj(rhp); --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46E57C43334 for ; Mon, 20 Jun 2022 23:00:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346059AbiFTXAU (ORCPT ); Mon, 20 Jun 2022 19:00:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345984AbiFTW7r (ORCPT ); Mon, 20 Jun 2022 18:59:47 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E6898193FA; Mon, 20 Jun 2022 15:58:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 201C56149F; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40E5CC341D0; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=TEhrntzTc8W9GmaHoeo/y0VQ2Ibq7HY4eHYBzDb30IA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tBJXcHreyiCNgJQfL0+2/Ie/226iIrAchhAJGgYGcj3B5HHrh2P4yyK1dplPcvUlR goPFscMvNlKFTry9qBSxmIZCrC23A6k/GbWDZ9f7gtbs/VXBSoGY+IzLsWVDzBiA5f BthWiS/c2UICYXwoqyJKXCUX50k7V5iut+LhtUnT0aabyBCSxcFqQXJ13XE8kNRtOO A+Q/mNamBMJj8Vb4535VvPREd2hRkc8qDth2NTHkEXbxcIBdj3f/N6Z9bF0p9CAE6W gIO0uEv+keabSB+jLD4Ewnl3AZavM9pMWIrmGqQOCt/xFXGfB0VqhrSt7NPZhbG0V/ udIAq/IbzTS8g== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A94495C0DEB; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, "Paul E. McKenney" , John Ogness Subject: [PATCH rcu 11/12] torture: Flush printk() buffers before powering off Date: Mon, 20 Jun 2022 15:58:16 -0700 Message-Id: <20220620225817.3843106-11-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The rcutorture test suite produces quite a bit of console output at the end of a test. This means that the new printk() kthreads are likely to be in the process of flushing output at the time of the torture_shutdown() function's call to kernel_power_off(). This commit therefore invokes pr_flush(1000, true) to flush this pending console output before invoking kernel_power_off(). Fixes: 8e274732115f ("printk: extend console_lock for per-console locking") Cc: John Ogness Signed-off-by: Paul E. McKenney Reviewed-by: John Ogness --- kernel/torture.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/torture.c b/kernel/torture.c index 789aeb0e1159c..6d7b282fbb5f8 100644 --- a/kernel/torture.c +++ b/kernel/torture.c @@ -651,6 +651,7 @@ static int torture_shutdown(void *arg) VERBOSE_TOROUT_STRING("No torture_shutdown_hook(), skipping."); if (ftrace_dump_at_shutdown) rcu_ftrace_dump(DUMP_ALL); + pr_flush(1000, true); kernel_power_off(); /* Shut down the system. */ return 0; } --=20 2.31.1.189.g2e36527f23 From nobody Sun Apr 26 08:23:06 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DBEC9C43334 for ; Mon, 20 Jun 2022 23:00:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346081AbiFTXAX (ORCPT ); Mon, 20 Jun 2022 19:00:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60284 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345982AbiFTW7q (ORCPT ); Mon, 20 Jun 2022 18:59:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E676F193F8; Mon, 20 Jun 2022 15:58:22 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 34BFF614AF; Mon, 20 Jun 2022 22:58:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54D57C341D4; Mon, 20 Jun 2022 22:58:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1655765900; bh=9Zhp5Ec7GPy63cX8G5KMm0YQJgk1oYOjZcoCMh4LQv4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nqYy2wKMAB205/QF/lJ3JXYUejq1GfnIAN3GKxG8IW14qMjnllWXDBoH8NZTM9PFp c9lyiz2pq6FudWbzIOYtKA3rW6wvON8NiSoY+kbO/Z0TrtSyyp2K8THai1FSPcSfTe 9uRd+ebBsJ18B4qQryjEFxKtHrIytc/466F9bJYecJsyXxYbYjfaWQGhjQQEy70UEq uoSKmiaqlUEOXJjmf8tq27acBymOY/KcLOk2Okpa/PO6/qwE3wk0p2/PYTyIagyAzL +gomfM+Vs5UumLOFouHBCcdqVq1r7gE1blCmYGrb/n86r8OM8uESiiLg4lrla7pXnr 3utqLi+42B9bA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id AB12C5C0E3F; Mon, 20 Jun 2022 15:58:19 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, rostedt@goodmis.org, Zqiang , "Paul E . McKenney" Subject: [PATCH rcu 12/12] refscale: Convert test_lock spinlock to raw_spinlock Date: Mon, 20 Jun 2022 15:58:17 -0700 Message-Id: <20220620225817.3843106-12-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> References: <20220620225814.GA3842995@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Zqiang In kernels built with CONFIG_PREEMPT_RT=3Dy, spinlocks are replaced by rt_mutex, which can sleep. This means that acquiring a non-raw spinlock in a critical section where preemption is disabled can trigger the following BUG: BUG: scheduling while atomic: ref_scale_reade/76/0x00000002 Preemption disabled at: ref_lock_section+0x16/0x80 Call Trace: dump_stack_lvl+0x5b/0x82 dump_stack+0x10/0x12 __schedule_bug.cold+0x9c/0xad __schedule+0x839/0xc00 schedule_rtlock+0x22/0x40 rtlock_slowlock_locked+0x460/0x1350 rt_spin_lock+0x61/0xe0 ref_lock_section+0x29/0x80 rcu_scale_one_reader+0x52/0x60 ref_scale_reader+0x28d/0x490 kthread+0x128/0x150 ret_from_fork+0x22/0x30 This commit therefore converts spinlock to raw_spinlock. Signed-off-by: Zqiang Signed-off-by: Paul E. McKenney --- kernel/rcu/refscale.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c index 909644abee67f..435c884c02b5c 100644 --- a/kernel/rcu/refscale.c +++ b/kernel/rcu/refscale.c @@ -385,7 +385,7 @@ static struct ref_scale_ops rwsem_ops =3D { }; =20 // Definitions for global spinlock -static DEFINE_SPINLOCK(test_lock); +static DEFINE_RAW_SPINLOCK(test_lock); =20 static void ref_lock_section(const int nloops) { @@ -393,8 +393,8 @@ static void ref_lock_section(const int nloops) =20 preempt_disable(); for (i =3D nloops; i >=3D 0; i--) { - spin_lock(&test_lock); - spin_unlock(&test_lock); + raw_spin_lock(&test_lock); + raw_spin_unlock(&test_lock); } preempt_enable(); } @@ -405,9 +405,9 @@ static void ref_lock_delay_section(const int nloops, co= nst int udl, const int nd =20 preempt_disable(); for (i =3D nloops; i >=3D 0; i--) { - spin_lock(&test_lock); + raw_spin_lock(&test_lock); un_delay(udl, ndl); - spin_unlock(&test_lock); + raw_spin_unlock(&test_lock); } preempt_enable(); } @@ -427,8 +427,8 @@ static void ref_lock_irq_section(const int nloops) =20 preempt_disable(); for (i =3D nloops; i >=3D 0; i--) { - spin_lock_irqsave(&test_lock, flags); - spin_unlock_irqrestore(&test_lock, flags); + raw_spin_lock_irqsave(&test_lock, flags); + raw_spin_unlock_irqrestore(&test_lock, flags); } preempt_enable(); } @@ -440,9 +440,9 @@ static void ref_lock_irq_delay_section(const int nloops= , const int udl, const in =20 preempt_disable(); for (i =3D nloops; i >=3D 0; i--) { - spin_lock_irqsave(&test_lock, flags); + raw_spin_lock_irqsave(&test_lock, flags); un_delay(udl, ndl); - spin_unlock_irqrestore(&test_lock, flags); + raw_spin_unlock_irqrestore(&test_lock, flags); } preempt_enable(); } --=20 2.31.1.189.g2e36527f23