Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dcd36d01 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and...

Merge branches 'doc.2016.04.19a', 'exp.2016.03.31d', 'fixes.2016.03.31d' and 'torture.2016.04.21a' into HEAD

doc.2016.04.19a: Documentation updates
exp.2016.03.31d: Expedited grace-period updates
fixes.2016.03.31d: Miscellaneous fixes
torture.2016.004.21a Torture-test updates
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -237,17 +237,17 @@ o "ktl" is the low-order 16 bits (in hexadecimal) of the count of

The output of "cat rcu/rcu_preempt/rcuexp" looks as follows:

s=21872 wd0=0 wd1=0 wd2=0 wd3=5 n=0 enq=0 sc=21872
s=21872 wd1=0 wd2=0 wd3=5 n=0 enq=0 sc=21872

These fields are as follows:

o	"s" is the sequence number, with an odd number indicating that
	an expedited grace period is in progress.

o	"wd0", "wd1", "wd2", and "wd3" are the number of times that an
	attempt to start an expedited grace period found that someone
	else had completed an expedited grace period that satisfies the
	attempted request.  "Our work is done."
o	"wd1", "wd2", and "wd3" are the number of times that an attempt
	to start an expedited grace period found that someone else had
	completed an expedited grace period that satisfies the attempted
	request.  "Our work is done."

o	"n" is number of times that a concurrent CPU-hotplug operation
	forced a fallback to a normal grace period.
+38 −0
Original line number Diff line number Diff line
@@ -3284,6 +3284,44 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
			Lazy RCU callbacks are those which RCU can
			prove do nothing more than free memory.

	rcuperf.gp_exp= [KNL]
			Measure performance of expedited synchronous
			grace-period primitives.

	rcuperf.holdoff= [KNL]
			Set test-start holdoff period.  The purpose of
			this parameter is to delay the start of the
			test until boot completes in order to avoid
			interference.

	rcuperf.nreaders= [KNL]
			Set number of RCU readers.  The value -1 selects
			N, where N is the number of CPUs.  A value
			"n" less than -1 selects N-n+1, where N is again
			the number of CPUs.  For example, -2 selects N
			(the number of CPUs), -3 selects N+1, and so on.
			A value of "n" less than or equal to -N selects
			a single reader.

	rcuperf.nwriters= [KNL]
			Set number of RCU writers.  The values operate
			the same as for rcuperf.nreaders.
			N, where N is the number of CPUs

	rcuperf.perf_runnable= [BOOT]
			Start rcuperf running at boot time.

	rcuperf.shutdown= [KNL]
			Shut the system down after performance tests
			complete.  This is useful for hands-off automated
			testing.

	rcuperf.perf_type= [KNL]
			Specify the RCU implementation to test.

	rcuperf.verbose= [KNL]
			Enable additional printk() statements.

	rcutorture.cbflood_inter_holdoff= [KNL]
			Set holdoff time (jiffies) between successive
			callback-flood tests.
+1 −16
Original line number Diff line number Diff line
@@ -508,14 +508,7 @@ int rcu_read_lock_bh_held(void);
 * CONFIG_DEBUG_LOCK_ALLOC, this assumes we are in an RCU-sched read-side
 * critical section unless it can prove otherwise.
 */
#ifdef CONFIG_PREEMPT_COUNT
int rcu_read_lock_sched_held(void);
#else /* #ifdef CONFIG_PREEMPT_COUNT */
static inline int rcu_read_lock_sched_held(void)
{
	return 1;
}
#endif /* #else #ifdef CONFIG_PREEMPT_COUNT */

#else /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */

@@ -532,18 +525,10 @@ static inline int rcu_read_lock_bh_held(void)
	return 1;
}

#ifdef CONFIG_PREEMPT_COUNT
static inline int rcu_read_lock_sched_held(void)
{
	return preempt_count() != 0 || irqs_disabled();
	return !preemptible();
}
#else /* #ifdef CONFIG_PREEMPT_COUNT */
static inline int rcu_read_lock_sched_held(void)
{
	return 1;
}
#endif /* #else #ifdef CONFIG_PREEMPT_COUNT */

#endif /* #else #ifdef CONFIG_DEBUG_LOCK_ALLOC */

#ifdef CONFIG_PROVE_RCU
+16 −0
Original line number Diff line number Diff line
@@ -149,6 +149,22 @@ static inline unsigned long rcu_batches_completed_sched(void)
	return 0;
}

/*
 * Return the number of expedited grace periods completed.
 */
static inline unsigned long rcu_exp_batches_completed(void)
{
	return 0;
}

/*
 * Return the number of expedited sched grace periods completed.
 */
static inline unsigned long rcu_exp_batches_completed_sched(void)
{
	return 0;
}

static inline void rcu_force_quiescent_state(void)
{
}
+2 −0
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ unsigned long rcu_batches_started_sched(void);
unsigned long rcu_batches_completed(void);
unsigned long rcu_batches_completed_bh(void);
unsigned long rcu_batches_completed_sched(void);
unsigned long rcu_exp_batches_completed(void);
unsigned long rcu_exp_batches_completed_sched(void);
void show_rcu_gp_kthreads(void);

void rcu_force_quiescent_state(void);
Loading