linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops
@ 2023-08-27 21:57 Joel Fernandes (Google)
  2023-08-27 21:57 ` [PATCH 5.15 2/2] rcu: Prevent expedited GP from enabling tick on offline CPU Joel Fernandes (Google)
  2023-08-27 22:27 ` [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Greg KH
  0 siblings, 2 replies; 5+ messages in thread
From: Joel Fernandes (Google) @ 2023-08-27 21:57 UTC (permalink / raw)
  To: stable, Paul E. McKenney, Josh Triplett, Steven Rostedt,
	Mathieu Desnoyers, Lai Jiangshan, Shuah Khan
  Cc: Joel Fernandes, rcu, linux-kselftest, linux-kernel

From: "Paul E. McKenney" <paulmck@kernel.org>

[ Upstream commit 10f84c2cfb5045e37d78cb5d4c8e8321e06ae18f ]

Currently, the various torture tests sometimes react to an early-boot
bug by rebooting.  This is almost always counterproductive, needlessly
consuming CPU time and bloating the console log.  This commit therefore
adds the "-no-reboot" argument to qemu so that reboot requests will
cause qemu to exit.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
 tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
index f4c8055dbf7a..c57be9563214 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
@@ -9,9 +9,10 @@
 #
 # Usage: kvm-test-1-run.sh config resdir seconds qemu-args boot_args_in
 #
-# qemu-args defaults to "-enable-kvm -nographic", along with arguments
-#			specifying the number of CPUs and other options
-#			generated from the underlying CPU architecture.
+# qemu-args defaults to "-enable-kvm -nographic -no-reboot", along with
+#			arguments specifying the number of CPUs and
+#			other options generated from the underlying
+#			CPU architecture.
 # boot_args_in defaults to value returned by the per_version_boot_params
 #			shell function.
 #
@@ -141,7 +142,7 @@ then
 fi
 
 # Generate -smp qemu argument.
-qemu_args="-enable-kvm -nographic $qemu_args"
+qemu_args="-enable-kvm -nographic -no-reboot $qemu_args"
 cpu_count=`configNR_CPUS.sh $resdir/ConfigFragment`
 cpu_count=`configfrag_boot_cpus "$boot_args_in" "$config_template" "$cpu_count"`
 if test "$cpu_count" -gt "$TORTURE_ALLOTED_CPUS"
-- 
2.42.0.rc1.204.g551eb34607-goog


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 5.15 2/2] rcu: Prevent expedited GP from enabling tick on offline CPU
  2023-08-27 21:57 [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Joel Fernandes (Google)
@ 2023-08-27 21:57 ` Joel Fernandes (Google)
  2023-08-27 22:27 ` [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Greg KH
  1 sibling, 0 replies; 5+ messages in thread
From: Joel Fernandes (Google) @ 2023-08-27 21:57 UTC (permalink / raw)
  To: stable, Paul E. McKenney, Josh Triplett, Steven Rostedt,
	Mathieu Desnoyers, Lai Jiangshan, Joel Fernandes
  Cc: rcu, linux-kernel

From: "Paul E. McKenney" <paulmck@kernel.org>

[ Upstream commit 147f04b14adde831eb4a0a1e378667429732f9e8 ]

If an RCU expedited grace period starts just when a CPU is in the process
of going offline, so that the outgoing CPU has completed its pass through
stop-machine but has not yet completed its final dive into the idle loop,
RCU will attempt to enable that CPU's scheduling-clock tick via a call
to tick_dep_set_cpu().  For this to happen, that CPU has to have been
online when the expedited grace period completed its CPU-selection phase.

This is pointless:  The outgoing CPU has interrupts disabled, so it cannot
take a scheduling-clock tick anyway.  In addition, the tick_dep_set_cpu()
function's eventual call to irq_work_queue_on() will splat as follows:

smpboot: CPU 1 is now offline
WARNING: CPU: 6 PID: 124 at kernel/irq_work.c:95
+irq_work_queue_on+0x57/0x60
Modules linked in:
CPU: 6 PID: 124 Comm: kworker/6:2 Not tainted 5.15.0-rc1+ #3
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
+rel-1.14.0-0-g155821a-rebuilt.opensuse.org 04/01/2014
Workqueue: rcu_gp wait_rcu_exp_gp
RIP: 0010:irq_work_queue_on+0x57/0x60
Code: 8b 05 1d c7 ea 62 a9 00 00 f0 00 75 21 4c 89 ce 44 89 c7 e8
+9b 37 fa ff ba 01 00 00 00 89 d0 c3 4c 89 cf e8 3b ff ff ff eb ee <0f> 0b eb b7
+0f 0b eb db 90 48 c7 c0 98 2a 02 00 65 48 03 05 91
 6f
RSP: 0000:ffffb12cc038fe48 EFLAGS: 00010282
RAX: 0000000000000001 RBX: 0000000000005208 RCX: 0000000000000020
RDX: 0000000000000001 RSI: 0000000000000001 RDI: ffff9ad01f45a680
RBP: 000000000004c990 R08: 0000000000000001 R09: ffff9ad01f45a680
R10: ffffb12cc0317db0 R11: 0000000000000001 R12: 00000000fffecee8
R13: 0000000000000001 R14: 0000000000026980 R15: ffffffff9e53ae00
FS:  0000000000000000(0000) GS:ffff9ad01f580000(0000)
+knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 000000000de0c000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 tick_nohz_dep_set_cpu+0x59/0x70
 rcu_exp_wait_wake+0x54e/0x870
 ? sync_rcu_exp_select_cpus+0x1fc/0x390
 process_one_work+0x1ef/0x3c0
 ? process_one_work+0x3c0/0x3c0
 worker_thread+0x28/0x3c0
 ? process_one_work+0x3c0/0x3c0
 kthread+0x115/0x140
 ? set_kthread_struct+0x40/0x40
 ret_from_fork+0x22/0x30
---[ end trace c5bf75eb6aa80bc6 ]---

This commit therefore avoids invoking tick_dep_set_cpu() on offlined
CPUs to limit both futility and false-positive splats.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
---
 kernel/rcu/tree_exp.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h
index f46c0c1a5eb3..407941a2903b 100644
--- a/kernel/rcu/tree_exp.h
+++ b/kernel/rcu/tree_exp.h
@@ -507,7 +507,10 @@ static void synchronize_rcu_expedited_wait(void)
 				if (rdp->rcu_forced_tick_exp)
 					continue;
 				rdp->rcu_forced_tick_exp = true;
-				tick_dep_set_cpu(cpu, TICK_DEP_BIT_RCU_EXP);
+				preempt_disable();
+				if (cpu_online(cpu))
+					tick_dep_set_cpu(cpu, TICK_DEP_BIT_RCU_EXP);
+				preempt_enable();
 			}
 		}
 		j = READ_ONCE(jiffies_till_first_fqs);
-- 
2.42.0.rc1.204.g551eb34607-goog


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops
  2023-08-27 21:57 [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Joel Fernandes (Google)
  2023-08-27 21:57 ` [PATCH 5.15 2/2] rcu: Prevent expedited GP from enabling tick on offline CPU Joel Fernandes (Google)
@ 2023-08-27 22:27 ` Greg KH
  2023-08-27 22:31   ` Joel Fernandes
  1 sibling, 1 reply; 5+ messages in thread
From: Greg KH @ 2023-08-27 22:27 UTC (permalink / raw)
  To: Joel Fernandes (Google)
  Cc: stable, Paul E. McKenney, Josh Triplett, Steven Rostedt,
	Mathieu Desnoyers, Lai Jiangshan, Shuah Khan, rcu,
	linux-kselftest, linux-kernel

On Sun, Aug 27, 2023 at 09:57:39PM +0000, Joel Fernandes (Google) wrote:
> From: "Paul E. McKenney" <paulmck@kernel.org>
> 
> [ Upstream commit 10f84c2cfb5045e37d78cb5d4c8e8321e06ae18f ]

I don't see this commit in Linus's tree, am I just missing it somewhere?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops
  2023-08-27 22:27 ` [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Greg KH
@ 2023-08-27 22:31   ` Joel Fernandes
  2023-08-28  9:56     ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Joel Fernandes @ 2023-08-27 22:31 UTC (permalink / raw)
  To: Greg KH
  Cc: stable, Paul E. McKenney, Josh Triplett, Steven Rostedt,
	Mathieu Desnoyers, Lai Jiangshan, Shuah Khan, rcu,
	linux-kselftest, linux-kernel

On Sun, Aug 27, 2023 at 6:27 PM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Sun, Aug 27, 2023 at 09:57:39PM +0000, Joel Fernandes (Google) wrote:
> > From: "Paul E. McKenney" <paulmck@kernel.org>
> >
> > [ Upstream commit 10f84c2cfb5045e37d78cb5d4c8e8321e06ae18f ]
>
> I don't see this commit in Linus's tree, am I just missing it somewhere?
>

Ah, this particular patch might not be in Linus's tree yet. It is in
Paul's tree. Feel free to ignore it for now if you want and I'll
resend it later (and likewise for the 5.10 one).

thanks,

 - Joel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops
  2023-08-27 22:31   ` Joel Fernandes
@ 2023-08-28  9:56     ` Greg KH
  0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2023-08-28  9:56 UTC (permalink / raw)
  To: Joel Fernandes
  Cc: stable, Paul E. McKenney, Josh Triplett, Steven Rostedt,
	Mathieu Desnoyers, Lai Jiangshan, Shuah Khan, rcu,
	linux-kselftest, linux-kernel

On Sun, Aug 27, 2023 at 06:31:55PM -0400, Joel Fernandes wrote:
> On Sun, Aug 27, 2023 at 6:27 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Sun, Aug 27, 2023 at 09:57:39PM +0000, Joel Fernandes (Google) wrote:
> > > From: "Paul E. McKenney" <paulmck@kernel.org>
> > >
> > > [ Upstream commit 10f84c2cfb5045e37d78cb5d4c8e8321e06ae18f ]
> >
> > I don't see this commit in Linus's tree, am I just missing it somewhere?
> >
> 
> Ah, this particular patch might not be in Linus's tree yet. It is in
> Paul's tree. Feel free to ignore it for now if you want and I'll
> resend it later (and likewise for the 5.10 one).

Yeah, please just send it later, once it has landed in a -rc release
otherwise there's nothing we can do with it now, sorry.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-08-28  9:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-27 21:57 [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Joel Fernandes (Google)
2023-08-27 21:57 ` [PATCH 5.15 2/2] rcu: Prevent expedited GP from enabling tick on offline CPU Joel Fernandes (Google)
2023-08-27 22:27 ` [PATCH 5.15 1/2] torture: Avoid torture-test reboot loops Greg KH
2023-08-27 22:31   ` Joel Fernandes
2023-08-28  9:56     ` Greg KH

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).