From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: linux-rt-users@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu, dipankar@in.ibm.com,
ego@in.ibm.com, vatsa@in.ibm.com, josht@linux.vnet.ibm.com
Subject: [PATCH RFC -rt] Allow rcutorture to handle synchronize_sched()
Date: Fri, 3 Aug 2007 11:44:49 -0700 [thread overview]
Message-ID: <20070803184449.GA2196@linux.vnet.ibm.com> (raw)
The rcutorture module uses a random-number generator that periodically
calls get_random_bytes() to add entropy. This random-number generator
is invoked from within the RCU read-side critical section, which, in the
case of the synchronize_sched() variant of RCU, has preeemption disabled.
Unfortunately, get_random_bytes() ends up acquiring normal spinlocks,
which can block in -rt, resulting in very large numbers of "scheduling
while atomic" messages.
This patch takes a very crude approach, simply substituting the time
of day for get_random_bytes().
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
rcutorture.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff -urpNa -X dontdiff linux-2.6.22.1-rt4/kernel/rcutorture.c linux-2.6.22.1-rt4-rcutorturesched/kernel/rcutorture.c
--- linux-2.6.22.1-rt4/kernel/rcutorture.c 2007-07-21 16:58:22.000000000 -0700
+++ linux-2.6.22.1-rt4-rcutorturesched/kernel/rcutorture.c 2007-08-02 16:38:09.000000000 -0700
@@ -165,16 +165,13 @@ struct rcu_random_state {
/*
* Crude but fast random-number generator. Uses a linear congruential
- * generator, with occasional help from get_random_bytes().
+ * generator, with occasional help from the time-of-day clock.
*/
static unsigned long
rcu_random(struct rcu_random_state *rrsp)
{
- long refresh;
-
if (--rrsp->rrs_count < 0) {
- get_random_bytes(&refresh, sizeof(refresh));
- rrsp->rrs_state += refresh;
+ rrsp->rrs_state += xtime.tv_nsec;
rrsp->rrs_count = RCU_RANDOM_REFRESH;
}
rrsp->rrs_state = rrsp->rrs_state * RCU_RANDOM_MULT + RCU_RANDOM_ADD;
next reply other threads:[~2007-08-03 18:44 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-03 18:44 Paul E. McKenney [this message]
2007-08-03 22:38 ` [PATCH RFC -rt] Allow rcutorture to handle synchronize_sched() Josh Triplett
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=20070803184449.GA2196@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=dipankar@in.ibm.com \
--cc=ego@in.ibm.com \
--cc=josht@linux.vnet.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=vatsa@in.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.