From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: mingo@kernel.org, jiangshanlai@gmail.com, dipankar@in.ibm.com,
akpm@linux-foundation.org, mathieu.desnoyers@efficios.com,
josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org,
rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com,
dvhart@linux.intel.com, fweisbec@gmail.com, oleg@redhat.com,
bobby.prani@gmail.com, Boqun Feng <boqun.feng@gmail.com>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
Subject: [PATCH tip/core/rcu 12/14] rcuperf: Don't treat gp_exp mis-setting as a WARN
Date: Wed, 15 Jun 2016 15:09:41 -0700 [thread overview]
Message-ID: <1466028583-8780-12-git-send-email-paulmck@linux.vnet.ibm.com> (raw)
In-Reply-To: <20160615220924.GA7877@linux.vnet.ibm.com>
From: Boqun Feng <boqun.feng@gmail.com>
0day found a boot warning triggered in rcu_perf_writer() on !SMP kernel:
WARN_ON(rcu_gp_is_normal() && gp_exp);
, the root cause of which is trying to measure expedited grace
periods(by setting gp_exp to true by default) when all the grace periods
are normal(TINY RCU only has normal grace periods).
However, such a mis-setting would only result in failing to measure the
performance for a specific kind of grace periods, therefore using a
WARN_ON to check this is a little overkilling. We could handle this
inside rcuperf module via some error messages to tell users about the
mis-settings.
Therefore this patch removes the WARN_ON in rcu_perf_writer() and
handles those checkings in rcu_perf_init() with plain if() code.
Moreover, this patch changes the default value of gp_exp to 1) align
with rcutorture tests and 2) make the default setting work for all RCU
implementations by default.
Suggested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Fixes: http://lkml.kernel.org/r/57411b10.mFvG0+AgcrMXGtcj%fengguang.wu@intel.com
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcu/rcuperf.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/kernel/rcu/rcuperf.c b/kernel/rcu/rcuperf.c
index afd174e901c3..7b2dbdffd791 100644
--- a/kernel/rcu/rcuperf.c
+++ b/kernel/rcu/rcuperf.c
@@ -58,7 +58,7 @@ MODULE_AUTHOR("Paul E. McKenney <paulmck@linux.vnet.ibm.com>");
#define VERBOSE_PERFOUT_ERRSTRING(s) \
do { if (verbose) pr_alert("%s" PERF_FLAG "!!! %s\n", perf_type, s); } while (0)
-torture_param(bool, gp_exp, true, "Use expedited GP wait primitives");
+torture_param(bool, gp_exp, false, "Use expedited GP wait primitives");
torture_param(int, holdoff, 10, "Holdoff time before test start (s)");
torture_param(int, nreaders, -1, "Number of RCU reader threads");
torture_param(int, nwriters, -1, "Number of RCU updater threads");
@@ -358,8 +358,6 @@ rcu_perf_writer(void *arg)
u64 *wdpp = writer_durations[me];
VERBOSE_PERFOUT_STRING("rcu_perf_writer task started");
- WARN_ON(rcu_gp_is_expedited() && !rcu_gp_is_normal() && !gp_exp);
- WARN_ON(rcu_gp_is_normal() && gp_exp);
WARN_ON(!wdpp);
set_cpus_allowed_ptr(current, cpumask_of(me % nr_cpu_ids));
sp.sched_priority = 1;
@@ -626,6 +624,16 @@ rcu_perf_init(void)
firsterr = -ENOMEM;
goto unwind;
}
+ if (rcu_gp_is_expedited() && !rcu_gp_is_normal() && !gp_exp) {
+ VERBOSE_PERFOUT_ERRSTRING("All grace periods expedited, no normal ones to measure!");
+ firsterr = -EINVAL;
+ goto unwind;
+ }
+ if (rcu_gp_is_normal() && gp_exp) {
+ VERBOSE_PERFOUT_ERRSTRING("All grace periods normal, no expedited ones to measure!");
+ firsterr = -EINVAL;
+ goto unwind;
+ }
for (i = 0; i < nrealwriters; i++) {
writer_durations[i] =
kcalloc(MAX_MEAS, sizeof(*writer_durations[i]),
--
2.5.2
next prev parent reply other threads:[~2016-06-15 22:11 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-15 22:09 [PATCH tip/core/rcu 0/14] Torture-test changes for 4.8 Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 01/14] torture: Simplify code, eliminate RCU_PERF_TEST_RUNNABLE Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 02/14] torture: Remove CONFIG_RCU_TORTURE_TEST_RUNNABLE, simplify code Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 03/14] torture: Forgive lengthy trace dumps and preemption Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 04/14] torture: Break online and offline functions out of torture_onoff() Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 05/14] torture: Add starvation events to error summary Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 06/14] torture: Stop onoff task if there is only one cpu Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 07/14] rcutorture/doc: Create initrd using dracut Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 08/14] rcutorture: Use vmlinux as the fallback kernel image Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 09/14] rcutorture: Make -soundhw a x86 specific option Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 10/14] rcutorture: Don't specify the cpu type of QEMU on PPC Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 11/14] rcutorture: Drop "-soundhw pcspkr" from x86 boot arguments Paul E. McKenney
2016-06-15 22:09 ` Paul E. McKenney [this message]
2016-06-15 22:09 ` [PATCH tip/core/rcu 13/14] torture: Inflict default jitter Paul E. McKenney
2016-06-15 22:09 ` [PATCH tip/core/rcu 14/14] rcutorture: Fix error return code in rcu_perf_init() Paul E. McKenney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1466028583-8780-12-git-send-email-paulmck@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bobby.prani@gmail.com \
--cc=boqun.feng@gmail.com \
--cc=dhowells@redhat.com \
--cc=dipankar@in.ibm.com \
--cc=dvhart@linux.intel.com \
--cc=edumazet@google.com \
--cc=fweisbec@gmail.com \
--cc=jiangshanlai@gmail.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome