From nobody Mon Feb 9 14:00:24 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8317F233701; Thu, 8 May 2025 23:45:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; cv=none; b=HGVc7TtC5OOE8ixeXRTEmx7UNF0EMde1E8rkC3Dj6YwDQaIx1zqqWtkAzhvpQYcUf4ysqqvLWpBt6nJio9fQa4gXdIQyp7O7g0nlHqCmnjPkwCP84CFciW1EqFHHGS0FSTYBNZak/0e2xrc2crCi2L66odNzrdSEUNNJeXGNVFc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; c=relaxed/simple; bh=aZVSh1sdTm/YNurWzN8SgnUsB5j4NFIIa9V88kYxZ+w=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=S9agSYtUM/vU7MxNXAp3tfgVouu3XYVRuJhTRdC/wbWGeLI4QGMINX1JzNKRh0m8riwseKds+YZwdzJhQ1D45xj4tDShvi5CrJjFLu7AWFfQ7bc3k2vZ/CQO4jc7PeHSPgRK7uRZ9UhjcvMNIne9k1a9gNAQNVeK1qDvb+PJ6kE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f1sR/fq0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="f1sR/fq0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0602BC4CEE7; Thu, 8 May 2025 23:45:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746747904; bh=aZVSh1sdTm/YNurWzN8SgnUsB5j4NFIIa9V88kYxZ+w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=f1sR/fq0I3Q50GXZLCmkyR9Wb2vMv2ln/aT/gS1Ex5QDGL1+LCN+MgNC8KPmD45NN zH6YDOfkdYEk8tFLr7t+PJQ1aKZKSI1vOqbOeFU63SJgKEAT7JNkN9Wduu595IXPCj xWqOvHlLlVto8utkEXFUZxkJhdJlmg2WMj4owywePdgDiVNeGvrPRnKJErkq1D44FH 0neKWNAnIRgvzUbznJo818zu5VXwqr8tuhhdm/Rw5n9qUFtcbxaLitmV73ZKtmG+xO AiKY5ziLpWuvdGOTct0ANrCM3Ub9c2ujkFJGJUiYm4wdof24ro7UYUDkRniiL/8KYd xRqyUuSMdOG/w== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id AF67ACE11A4; Thu, 8 May 2025 16:45:03 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH 1/5] torture: Suppress torture.sh "Zero time" messages for disabled tests Date: Thu, 8 May 2025 16:44:58 -0700 Message-Id: <20250508234502.1996788-1-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The torture.sh script prints " --- Zero time for locktorture, disabling" when the --duration parameter is too short to allow the test to run even when locktorture has been disabled, for example, via --do-none. The same is true for scftorture and rcutorture. This commit therefore suppresses this message when the corresponding test has been disabled. Signed-off-by: Paul E. McKenney --- tools/testing/selftests/rcutorture/bin/torture.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/test= ing/selftests/rcutorture/bin/torture.sh index e03fdaca89b35..c518de2968711 100755 --- a/tools/testing/selftests/rcutorture/bin/torture.sh +++ b/tools/testing/selftests/rcutorture/bin/torture.sh @@ -274,7 +274,7 @@ then configs_rcutorture=3DCFLIST fi duration_rcutorture=3D$((duration_base*duration_rcutorture_frac/10)) -if test "$duration_rcutorture" -eq 0 +if test "$duration_rcutorture" -eq 0 && test "$do_locktorture" =3D "yes" then echo " --- Zero time for rcutorture, disabling" | tee -a $T/log do_rcutorture=3Dno @@ -286,7 +286,7 @@ then configs_locktorture=3DCFLIST fi duration_locktorture=3D$((duration_base*duration_locktorture_frac/10)) -if test "$duration_locktorture" -eq 0 +if test "$duration_locktorture" -eq 0 && test "$do_locktorture" =3D "yes" then echo " --- Zero time for locktorture, disabling" | tee -a $T/log do_locktorture=3Dno @@ -298,7 +298,7 @@ then configs_scftorture=3DCFLIST fi duration_scftorture=3D$((duration_base*duration_scftorture_frac/10)) -if test "$duration_scftorture" -eq 0 +if test "$duration_scftorture" -eq 0 && test "$do_scftorture" =3D "yes" then echo " --- Zero time for scftorture, disabling" | tee -a $T/log do_scftorture=3Dno --=20 2.40.1 From nobody Mon Feb 9 14:00:24 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3153722D9FF; Thu, 8 May 2025 23:45:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; cv=none; b=fDumaQAuq6QEBQjdSwqLKncrOSdTmA+vgATA1p4tfLN9hMBgDLNvaikTp3GYZriqS1Y+3y9Z2XOs77rs40eLEdkVJOpB+1GLLlq+5CIgJcMPzJgI2gim3tfU6xuGzF2gqgnGe1RDRHkTX7hoCgmpyuNwFIk3yewtiA/yC3VifYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; c=relaxed/simple; bh=bvCZgli80KnITWarlCrhmBdHt7QXA9LBPnvN1OFeIHs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=d7j8Ck+5BfTRfEcW3Sp0oQSm8OtOmUaXCXSgHTjpgTDS/eFCIsgFaOdhe4YW1gpndujycuKk9IOfymvaI0/l8/DMDLoncJoEvZfOROGPhQfeJhYZyUyWI++2KHAtUzvzC9rbyQP6BxkzEzcTkZshYx68mTFVjQ1/az0Mu1bY5xo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fEFGDNA9; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="fEFGDNA9" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 10ABEC4CEED; Thu, 8 May 2025 23:45:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746747904; bh=bvCZgli80KnITWarlCrhmBdHt7QXA9LBPnvN1OFeIHs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fEFGDNA9IaWTXP3d6e/ocxz+i83PL2a00I+8tmusPGA3h5OCXw3Aa79muJ1MNGMF/ Lt/A2H/7SAxr3LthaMSWpfW9eDVPe/DPfvfKUNAK9Tozh/FPWWnA5G2Wf0h6TGu7ce tRcvKHP/IuBR32YINzsi8q6UssmtbspSnm1oQJgC1bMAAB9Uagm6yCp6x4XlpBz3By yHdwVRRtatdMkR8vmArqqsS8mfiqXzlaHtBp5ZiNZFBcpMOY0QxEJE7jasp5Ol32Vh SkVTC15OV+rEnbPeAxRjNYF7sZLnLxo8WT8qtI5JJJIp3YTDIUQIVqTbMeedleoD/0 EeM8K3szxx6EQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id B242BCE11D3; Thu, 8 May 2025 16:45:03 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH 2/5] rcutorture: Print number of RCU up/down readers and migrations Date: Thu, 8 May 2025 16:44:59 -0700 Message-Id: <20250508234502.1996788-2-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This commit prints the number of RCU up/down readers and the number of such readers that migrated from one CPU to another, along with the rest of the periodic rcu_torture_stats_print() output. These statistics are currently used only by srcu_down_read{,_fast}() and srcu_up_read(,_fast)(). Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 0e044afa98d32..21ff365fca5d9 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2447,9 +2447,11 @@ struct rcu_torture_one_read_state_updown { struct hrtimer rtorsu_hrt; bool rtorsu_inuse; ktime_t rtorsu_kt; + int rtorsu_cpu; unsigned long rtorsu_j; unsigned long rtorsu_ndowns; unsigned long rtorsu_nups; + unsigned long rtorsu_nmigrates; struct torture_random_state rtorsu_trs; struct rcu_torture_one_read_state rtorsu_rtors; }; @@ -2460,12 +2462,15 @@ static int rcu_torture_updown(void *arg); =20 static enum hrtimer_restart rcu_torture_updown_hrt(struct hrtimer *hrtp) { + int cpu =3D raw_smp_processor_id(); struct rcu_torture_one_read_state_updown *rtorsup; =20 rtorsup =3D container_of(hrtp, struct rcu_torture_one_read_state_updown, = rtorsu_hrt); rcu_torture_one_read_end(&rtorsup->rtorsu_rtors, &rtorsup->rtorsu_trs, -1= ); WARN_ONCE(rtorsup->rtorsu_nups >=3D rtorsup->rtorsu_ndowns, "%s: Up witho= ut matching down #%zu.\n", __func__, rtorsup - updownreaders); - rtorsup->rtorsu_nups++; + WRITE_ONCE(rtorsup->rtorsu_nups, rtorsup->rtorsu_nups + 1); + WRITE_ONCE(rtorsup->rtorsu_nmigrates, + rtorsup->rtorsu_nmigrates + (cpu !=3D rtorsup->rtorsu_cpu)); smp_store_release(&rtorsup->rtorsu_inuse, false); return HRTIMER_NORESTART; } @@ -2513,7 +2518,7 @@ static void rcu_torture_updown_cleanup(void) if (hrtimer_cancel(&rtorsup->rtorsu_hrt) || WARN_ON_ONCE(rtorsup->rtorsu= _inuse)) { rcu_torture_one_read_end(&rtorsup->rtorsu_rtors, &rtorsup->rtorsu_trs, = -1); WARN_ONCE(rtorsup->rtorsu_nups >=3D rtorsup->rtorsu_ndowns, "%s: Up wit= hout matching down #%zu.\n", __func__, rtorsup - updownreaders); - rtorsup->rtorsu_nups++; + WRITE_ONCE(rtorsup->rtorsu_nups, rtorsup->rtorsu_nups + 1); smp_store_release(&rtorsup->rtorsu_inuse, false); } =20 @@ -2531,13 +2536,14 @@ static void rcu_torture_updown_one(struct rcu_tortu= re_one_read_state_updown *rto =20 init_rcu_torture_one_read_state(&rtorsup->rtorsu_rtors, &rtorsup->rtorsu_= trs); rawidx =3D cur_ops->down_read(); - rtorsup->rtorsu_ndowns++; + WRITE_ONCE(rtorsup->rtorsu_ndowns, rtorsup->rtorsu_ndowns + 1); idx =3D (rawidx << RCUTORTURE_RDR_SHIFT_1) & RCUTORTURE_RDR_MASK_1; rtorsup->rtorsu_rtors.readstate =3D idx | RCUTORTURE_RDR_UPDOWN; rtorsup->rtorsu_rtors.rtrsp++; + rtorsup->rtorsu_cpu =3D raw_smp_processor_id(); if (!rcu_torture_one_read_start(&rtorsup->rtorsu_rtors, &rtorsup->rtorsu_= trs, -1)) { WARN_ONCE(rtorsup->rtorsu_nups >=3D rtorsup->rtorsu_ndowns, "%s: Up with= out matching down #%zu.\n", __func__, rtorsup - updownreaders); - rtorsup->rtorsu_nups++; + WRITE_ONCE(rtorsup->rtorsu_nups, rtorsup->rtorsu_nups + 1); schedule_timeout_idle(HZ); return; } @@ -2646,6 +2652,10 @@ rcu_torture_stats_print(void) long pipesummary[RCU_TORTURE_PIPE_LEN + 1] =3D { 0 }; long batchsummary[RCU_TORTURE_PIPE_LEN + 1] =3D { 0 }; long n_gpwraps =3D 0; + unsigned long ndowns =3D 0; + unsigned long nunexpired =3D 0; + unsigned long nmigrates =3D 0; + unsigned long nups =3D 0; struct rcu_torture *rtcp; static unsigned long rtcv_snap =3D ULONG_MAX; static bool splatted; @@ -2659,10 +2669,18 @@ rcu_torture_stats_print(void) if (cur_ops->get_gpwrap_count) n_gpwraps +=3D cur_ops->get_gpwrap_count(cpu); } + if (updownreaders) { + for (i =3D 0; i < n_up_down; i++) { + ndowns +=3D READ_ONCE(updownreaders[i].rtorsu_ndowns); + nups +=3D READ_ONCE(updownreaders[i].rtorsu_nups); + nunexpired +=3D READ_ONCE(updownreaders[i].rtorsu_inuse); + nmigrates +=3D READ_ONCE(updownreaders[i].rtorsu_nmigrates); + } + } for (i =3D RCU_TORTURE_PIPE_LEN; i >=3D 0; i--) { if (pipesummary[i] !=3D 0) break; - } + } // The value of variable "i" is used later, so don't clobber it! =20 pr_alert("%s%s ", torture_type, TORTURE_FLAG); rtcp =3D rcu_access_pointer(rcu_torture_current); @@ -2683,6 +2701,8 @@ rcu_torture_stats_print(void) n_rcu_torture_boost_failure, n_rcu_torture_boosts, atomic_long_read(&n_rcu_torture_timers)); + if (updownreaders) + pr_cont("ndowns: %lu nups: %lu nhrt: %lu nmigrates: %lu ", ndowns, nups,= nunexpired, nmigrates); torture_onoff_stats(); pr_cont("barrier: %ld/%ld:%ld ", data_race(n_barrier_successes), --=20 2.40.1 From nobody Mon Feb 9 14:00:24 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83250233D64; Thu, 8 May 2025 23:45:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; cv=none; b=E+SJLnix+MUORNQJVOiWik8UKfofPy9NRV3i+clZLqVrF8DsAP5ePJHoUoKCwzwyFc17kNOp0mQDRDVZfJsmI1ijFthG+krdCj4u/ex3zwDMrvM6Gd4/4K1LUIFKV957TotfYCbfb82Fkml2d5CHvRerf5uXJcTkMdf9Y0LEH5w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; c=relaxed/simple; bh=wjmsx2LsnelLdH4TKcVqs8egjrClA+QsGvFK5jj/1bg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=F8yY3YU65Ecr5kPKLN4cnKg6SDiOuyUhcXKm+4k9Ite5+IX9xQ1PwHtbBFBcOhwT4iILWEgkE4RtkZtR58jGFr2UVcChh1az79hzqtlSkbuVogW15znEWC/VgArwzzKNX+M80Ce4wgt1Hhy5lsPRxlZwTNSM6DD/R0Q8ERQ7mtQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tZLcWfKt; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tZLcWfKt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1EED9C4CEEE; Thu, 8 May 2025 23:45:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746747904; bh=wjmsx2LsnelLdH4TKcVqs8egjrClA+QsGvFK5jj/1bg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tZLcWfKtbg2U5TR32eUtMOVbGysa8lPQ/814+NucwLCsbLOKIiLr0rohen99x3nZu 7eIN8TUFPq+yKJY9aapEQwn83U4P1BA8gmtGi8hNZ0dgv+sL0sS4BYhwqBDW1E2XfZ FoQUtBrCP3KyPo6NUsJEdlnQHM8ihz7G8ybK2EG1Gyn9L0cCLIOxpaDyQH3XPtnJZ2 /StrT+rkajelXRMqLAFbTbreXgvylBZbON6SpD5XOUUGnzA9rLK9C2PhkFaivt1T9r LcCONDMViYjesXO+mAgJxL29RreTFDrBYfLpCfWFRQ2Pgt+maZMagaiYDu3DBnPYED xhRwiTwlTxrbw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id B525ACE11D4; Thu, 8 May 2025 16:45:03 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH 3/5] rcutorture: Check for no up/down readers at task level Date: Thu, 8 May 2025 16:45:00 -0700 Message-Id: <20250508234502.1996788-3-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The design of testing of up/down readers such as srcu_down_read() and srcu_up_read() assumes that these are tested only by the rcu_torture_updown() kthread, and never by the rcu_torture_reader() kthread. Because we all know which road is paved with good intentions, this commit adds WARN_ON_ONCE() to verify that things are going to plan. Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 21ff365fca5d9..d94b24f19cf59 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -2231,6 +2231,7 @@ rcutorture_loop_extend(int *readstate, bool insoftirq= , struct torture_random_sta i =3D ((i | (i >> 3)) & RCUTORTURE_RDR_MAX_LOOPS) + 1; for (j =3D 0; j < i; j++) { mask =3D rcutorture_extend_mask(*readstate, trsp); + WARN_ON_ONCE(mask & RCUTORTURE_RDR_UPDOWN); rcutorture_one_extend(readstate, mask, insoftirq, trsp, &rtrsp[j]); } return &rtrsp[j]; @@ -2367,6 +2368,7 @@ static bool rcu_torture_one_read(struct torture_rando= m_state *trsp, long myid) WARN_ON_ONCE(!rcu_is_watching()); init_rcu_torture_one_read_state(&rtors, trsp); newstate =3D rcutorture_extend_mask(rtors.readstate, trsp); + WARN_ON_ONCE(newstate & RCUTORTURE_RDR_UPDOWN); rcutorture_one_extend(&rtors.readstate, newstate, myid < 0, trsp, rtors.r= trsp++); if (!rcu_torture_one_read_start(&rtors, trsp, myid)) { rcutorture_one_extend(&rtors.readstate, 0, myid < 0, trsp, rtors.rtrsp); --=20 2.40.1 From nobody Mon Feb 9 14:00:24 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 831EF233736; Thu, 8 May 2025 23:45:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; cv=none; b=qGe/VAVm7mLrPifg95koTq/MHICfTxioU3vWtdLv88s7FCJUiitRhnxrbkh8u5HCZbqybKOaKtT2uylXGv7hpjM/++saui7bFA+4wcFG4ELFFq4zF+hwOe3/iAIKvEYerMIdPomqs7eWiOjHVHZOxMu+8d6wAH+Al276hwaQuBM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; c=relaxed/simple; bh=k1mtwuY4N05SGMOTXGfHc6NzT0+sC8UthwhkhK0hGqQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HwihRo5r4ISUjqE+732HHNDDUdJ40QOh8l7OOW8snkO4VjbCDL3ITiS/I3RlQEAh9Hni9jUg7ldg5LfWEvVr9MDE/Mmj8lhRk9DqajUFc2VnBxe9Ihcw5eKgunAB9Ar3RDp99Wx/mDk/Sd1875YmT3ZobO7LAwvtAC8QDPsAFps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kwcADmOS; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kwcADmOS" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 28080C4CEF1; Thu, 8 May 2025 23:45:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746747904; bh=k1mtwuY4N05SGMOTXGfHc6NzT0+sC8UthwhkhK0hGqQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kwcADmOSZs52VirpuzMPpmA1o7cAtFphM/sO7XHZexdp6RNILUeJNLLu3SCDF7tU+ 3Rsf18QcTdHFUaPE4Jeyc02c+LSRJwo3kTOkV3teU5MDw0BD5+yacmUKs22t6eMsYb bLTgeJB4tfBdGjs7DaQb7aiC+UR3g+bMbUl4k6eipgDzJu/dxK7id3XOlZ8vn8mIyJ BUJAOP645syvK46aNyXvy3kHa9v2M7eT2DGwLPU+P1OLHy5MVY6ZHbd19jYaNMbWhs EC6d54hXQjOGtIXdxWK6swkcICy+ZEHYMcPDJ+eRFBX37Yo2TWpfyo4VJ6XHLYnupK s8TT4ei3Sgc3A== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id B7D04CE11F1; Thu, 8 May 2025 16:45:03 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, rostedt@goodmis.org, "Paul E. McKenney" , Joel Fernandes , Boqun Feng Subject: [PATCH 4/5] rcutorture: Start rcu_torture_writer() after rcu_torture_reader() Date: Thu, 8 May 2025 16:45:01 -0700 Message-Id: <20250508234502.1996788-4-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Testing of rcutorture's SRCU-P scenario on a large arm64 system resulted in rcu_torture_writer() forward-progress failures, but these same tests passed on x86. After some off-list discussion of possible memory-ordering causes for these failures, Boqun showed that these were in fact due to reordering, but by the scheduler, not by the memory system. On x86, rcu_torture_writer() would have run quickly enough that by the time the rcu_torture_updown() kthread started, the rcu_torture_current variable would already be initialized, thus avoiding a bug in which a NULL value would cause rcu_torture_updown() to do an extra call to srcu_up_read_fast(). This commit therefore moves creation of the rcu_torture_writer() kthread after that of the rcu_torture_reader() kthreads. This results in deterministic failures on x86. What about the double-srcu_up_read_fast() bug? Boqun has the fix. But let's also fix the test while we are at it! Reported-by: Joel Fernandes Reported-by: Boqun Feng Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index d94b24f19cf59..62f082e24d3b9 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -4476,11 +4476,6 @@ rcu_torture_init(void) /* Start up the kthreads. */ =20 rcu_torture_write_types(); - firsterr =3D torture_create_kthread(rcu_torture_writer, NULL, - writer_task); - if (torture_init_error(firsterr)) - goto unwind; - if (nrealfakewriters > 0) { fakewriter_tasks =3D kcalloc(nrealfakewriters, sizeof(fakewriter_tasks[0]), @@ -4516,6 +4511,11 @@ rcu_torture_init(void) firsterr =3D rcu_torture_updown_init(); if (torture_init_error(firsterr)) goto unwind; + firsterr =3D torture_create_kthread(rcu_torture_writer, NULL, + writer_task); + if (torture_init_error(firsterr)) + goto unwind; + nrealnocbers =3D nocbs_nthreads; if (WARN_ON(nrealnocbers < 0)) nrealnocbers =3D 1; --=20 2.40.1 From nobody Mon Feb 9 14:00:24 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D7582343AB; Thu, 8 May 2025 23:45:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; cv=none; b=Yk6sr9sT7pZw+H7+4LHM2CaaxGkGjtOZzf+fVap1WRw/7YkACoNUjvFaUEVqR+AAifnH1HlGTEj9Tj11lyiBmmh4S99xUEJ/BwTZ2380CGn8gX+6OGzD3p1t91EotRYaXmEQbNmBqbdFsgtBFcdLN4LlkNIBrilMglo60S9zlSo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746747904; c=relaxed/simple; bh=wdDK5nxaELS/PQC9NgXLAp9F6KeKLLYF3gwJtidFXPY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=E8rXccfq3StOJt0xgt8K/B8+8N4dRijjzzNGz5uCRRjtR3qLpHfqwprM3nOwdt+QxQ4g0jCAlzRL+wobZALKwjVACK9UEX4afagLuMDFhuEe8QWlOMRnFRv92uw7zZD4d7OoZfPRWuvZkOunG6QyAwAGvPzDO0FvUbRUPZZBwp8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tbf/5fNX; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tbf/5fNX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 319F5C4CEF3; Thu, 8 May 2025 23:45:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1746747904; bh=wdDK5nxaELS/PQC9NgXLAp9F6KeKLLYF3gwJtidFXPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=tbf/5fNXpdHxIyDjSWs3/IG/Rhvmefqgwjiv+grJYs0+PE56Ow9A/1IRJqLEJ05JB igjn8F/Mc+lQddBj7JQCo+8L1W+5JwNMoa9jn6B0QjPiVkVPH1H+bwZz0panAobMsi Qip2GzLj0riZ6x5Ah5lVIwB6JdhIfsrYtu1NkRS8t36jNUVFtZH57WrIG8d1mIriaQ IjQIGhZE9fltUaS5w0K6RsCmjZgX6D8XmVASrqK0SAKUs5TOHRmMOOOpH0JgX5Qume hmZdrVdIbTHmJ0ni6GdJiAAmm0/Px5BpPaJUKCMmKUiZQ7Y/j6jrMMcYL3if0ssnls 3lqMadOtpuY4Q== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id BA383CE122F; Thu, 8 May 2025 16:45:03 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@meta.com, rostedt@goodmis.org, "Paul E. McKenney" Subject: [PATCH 5/5] rcutorture: Print only one rtort_pipe_count splat Date: Thu, 8 May 2025 16:45:02 -0700 Message-Id: <20250508234502.1996788-5-paulmck@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The rcu_torture_writer() function scans the memory blocks after a stutter (or forced idle) interval, complaining about any that have not passed through ten grace periods since the start of the stutter interval. But one splat suffices, so this commit therefore stops at the first splat. 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 62f082e24d3b9..2699f47557bf7 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -1781,6 +1781,7 @@ rcu_torture_writer(void *arg) cur_ops->gp_kthread_dbg(); WARN(1, "%s: rtort_pipe_count: %d\n", __func__, rcu_tortures[i].rtort= _pipe_count); rcu_ftrace_dump(DUMP_ALL); + break; } if (stutter_waited) sched_set_normal(current, oldnice); --=20 2.40.1