From nobody Sat Feb 7 14:03:08 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 49E69CD80B9 for ; Tue, 10 Oct 2023 12:01:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231778AbjJJMBS (ORCPT ); Tue, 10 Oct 2023 08:01:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231658AbjJJMAi (ORCPT ); Tue, 10 Oct 2023 08:00:38 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75666D60; Tue, 10 Oct 2023 05:00:16 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB724C433C7; Tue, 10 Oct 2023 12:00:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1696939216; bh=sd1BPgiKDfHKjuQl36jNFm0pH7W5mKDJ9L2h4RjkSRk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dzPVo0+0uHMstI2hSVtR4YVo/sDmn97eFC7F98J8QZEZvOibKJU8XFQE3FRBZif3X 2k5bDWGU+rmMJGTMA3+9Cqlx5ua/2ExJnfZN5j21ez0dLVbYPkAtKzfMD+cDSPbXQm RgQeXPfVdtceXnE9F9H4kvRFOh8HIbkWe75bJEHZPBqPYva8H424O/rdMkWbu5rmpI lq5SNombP7vkupyY+lNPri464vzdLdm48zBUwVOumvFtF6jqwo9nOW88YGUgsAR0sx y2+WrRCkRz2SJjHyJg/tC+sOMksuf4ai1wjatnGX/vg8EzYHsRV+hMg2SQOv7r56l4 iuLVm+uLVB4UA== From: Frederic Weisbecker To: LKML Cc: "Paul E. McKenney" , Boqun Feng , Joel Fernandes , Josh Triplett , Mathieu Desnoyers , Neeraj Upadhyay , Steven Rostedt , Uladzislau Rezki , rcu , Frederic Weisbecker Subject: [PATCH 15/23] locktorture: Add new module parameters to lock_torture_print_module_parms() Date: Tue, 10 Oct 2023 13:59:13 +0200 Message-Id: <20231010115921.988766-16-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231010115921.988766-1-frederic@kernel.org> References: <20231010115921.988766-1-frederic@kernel.org> 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: "Paul E. McKenney" This commit adds new module parameters to lock_torture_print_module_parms, and alphabetizes things while in the area. This change makes locktorture test results more useful and self-contained. Signed-off-by: Paul E. McKenney Signed-off-by: Frederic Weisbecker --- kernel/locking/locktorture.c | 64 +++++++++++++----------------------- 1 file changed, 23 insertions(+), 41 deletions(-) diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c index 296815ef67ae..d2a3a8cc1902 100644 --- a/kernel/locking/locktorture.c +++ b/kernel/locking/locktorture.c @@ -47,8 +47,8 @@ torture_param(int, shuffle_interval, 3, "Number of jiffie= s between shuffles, 0=3Dd torture_param(int, shutdown_secs, 0, "Shutdown time (j), <=3D zero to disa= ble."); torture_param(int, stat_interval, 60, "Number of seconds between stats pri= ntk()s"); torture_param(int, stutter, 5, "Number of jiffies to run/halt test, 0=3Ddi= sable"); -torture_param(int, writer_fifo, 0, "Run writers at sched_set_fifo() priori= ty"); torture_param(int, verbose, 1, "Enable verbose debugging printk()s"); +torture_param(int, writer_fifo, 0, "Run writers at sched_set_fifo() priori= ty"); /* Going much higher trips "BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!" errors= */ #define MAX_NESTED_LOCKS 8 =20 @@ -166,12 +166,9 @@ static int torture_lock_busted_write_lock(int tid __ma= ybe_unused) =20 static void torture_lock_busted_write_delay(struct torture_random_state *t= rsp) { - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; - /* We want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealwriters_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms); + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) + mdelay(long_hold); if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) torture_preempt_schedule(); /* Allow test to be preempted. */ } @@ -244,15 +241,14 @@ __acquires(torture_spinlock) static void torture_spin_lock_write_delay(struct torture_random_state *trs= p) { const unsigned long shortdelay_us =3D 2; - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; unsigned long j; =20 /* We want a short delay mostly to emulate likely code, and * we want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 2000 * longdelay_= ms))) { + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) { j =3D jiffies; - mdelay(longdelay_ms); + mdelay(long_hold); pr_alert("%s: delay =3D %lu jiffies.\n", __func__, jiffies - j); } if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 200 * shortdelay_= us))) @@ -370,14 +366,12 @@ __acquires(torture_rwlock) static void torture_rwlock_write_delay(struct torture_random_state *trsp) { const unsigned long shortdelay_us =3D 2; - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; =20 /* We want a short delay mostly to emulate likely code, and * we want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealwriters_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms); + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) + mdelay(long_hold); else udelay(shortdelay_us); } @@ -398,14 +392,12 @@ __acquires(torture_rwlock) static void torture_rwlock_read_delay(struct torture_random_state *trsp) { const unsigned long shortdelay_us =3D 10; - const unsigned long longdelay_ms =3D 100; =20 /* We want a short delay mostly to emulate likely code, and * we want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealreaders_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms); + if (long_hold && !(torture_random(trsp) % (cxt.nrealreaders_stress * 2000= * long_hold))) + mdelay(long_hold); else udelay(shortdelay_us); } @@ -503,12 +495,9 @@ __acquires(torture_mutex) =20 static void torture_mutex_delay(struct torture_random_state *trsp) { - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; - /* We want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealwriters_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms * 5); + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) + mdelay(long_hold * 5); if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) torture_preempt_schedule(); /* Allow test to be preempted. */ } @@ -676,15 +665,13 @@ __acquires(torture_rtmutex) static void torture_rtmutex_delay(struct torture_random_state *trsp) { const unsigned long shortdelay_us =3D 2; - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; =20 /* * We want a short delay mostly to emulate likely code, and * we want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealwriters_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms); + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) + mdelay(long_hold); if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 200 * shortdelay_us))) udelay(shortdelay_us); @@ -741,12 +728,9 @@ __acquires(torture_rwsem) =20 static void torture_rwsem_write_delay(struct torture_random_state *trsp) { - const unsigned long longdelay_ms =3D long_hold ? long_hold : ULONG_MAX; - /* We want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealwriters_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms * 10); + if (long_hold && !(torture_random(trsp) % (cxt.nrealwriters_stress * 2000= * long_hold))) + mdelay(long_hold * 10); if (!(torture_random(trsp) % (cxt.nrealwriters_stress * 20000))) torture_preempt_schedule(); /* Allow test to be preempted. */ } @@ -766,14 +750,11 @@ __acquires(torture_rwsem) =20 static void torture_rwsem_read_delay(struct torture_random_state *trsp) { - const unsigned long longdelay_ms =3D 100; - /* We want a long delay occasionally to force massive contention. */ - if (!(torture_random(trsp) % - (cxt.nrealreaders_stress * 2000 * longdelay_ms))) - mdelay(longdelay_ms * 2); + if (long_hold && !(torture_random(trsp) % (cxt.nrealreaders_stress * 2000= * long_hold))) + mdelay(long_hold * 2); else - mdelay(longdelay_ms / 2); + mdelay(long_hold / 2); if (!(torture_random(trsp) % (cxt.nrealreaders_stress * 20000))) torture_preempt_schedule(); /* Allow test to be preempted. */ } @@ -1056,11 +1037,12 @@ lock_torture_print_module_parms(struct lock_torture= _ops *cur_ops, =20 cpumask_setall(&cpumask_all); pr_alert("%s" TORTURE_FLAG - "--- %s%s: nwriters_stress=3D%d nreaders_stress=3D%d nested_locks=3D%d = stat_interval=3D%d verbose=3D%d shuffle_interval=3D%d stutter=3D%d shutdown= _secs=3D%d onoff_interval=3D%d onoff_holdoff=3D%d readers_bind=3D%*pbl writ= ers_bind=3D%*pbl\n", + "--- %s%s: acq_writer_lim=3D%d long_hold=3D%d nested_locks=3D%d nreader= s_stress=3D%d nwriters_stress=3D%d onoff_holdoff=3D%d onoff_interval=3D%d r= t_boost=3D%d rt_boost_factor=3D%d shuffle_interval=3D%d shutdown_secs=3D%d = stat_interval=3D%d stutter=3D%d verbose=3D%d writer_fifo=3D%d readers_bind= =3D%*pbl writers_bind=3D%*pbl\n", torture_type, tag, cxt.debug_lock ? " [debug]": "", - cxt.nrealwriters_stress, cxt.nrealreaders_stress, - nested_locks, stat_interval, verbose, shuffle_interval, - stutter, shutdown_secs, onoff_interval, onoff_holdoff, + acq_writer_lim, long_hold, nested_locks, cxt.nrealreaders_stress, + cxt.nrealwriters_stress, onoff_holdoff, onoff_interval, rt_boost, + rt_boost_factor, shuffle_interval, shutdown_secs, stat_interval, stutte= r, + verbose, writer_fifo, cpumask_pr_args(rcmp), cpumask_pr_args(wcmp)); } =20 --=20 2.34.1