This document gives a brief rationale for the TREE_RCU-related test
cases, a group that includes PREEMPT_RCU.


Kconfig Parameters:

CONFIG_DEBUG_LOCK_ALLOC -- Do three, covering CONFIG_PROVE_LOCKING & not.
CONFIG_DEBUG_OBJECTS_RCU_HEAD -- Do one.
CONFIG_HOTPLUG_CPU -- Do half.  (Every second.)
CONFIG_HZ_PERIODIC -- Do one.
CONFIG_NO_HZ_IDLE -- Do those not otherwise specified. (Groups of two.)
CONFIG_NO_HZ_FULL -- Do two, one with CONFIG_NO_HZ_FULL_SYSIDLE.
CONFIG_NO_HZ_FULL_SYSIDLE -- Do one.
CONFIG_PREEMPT -- Do half.  (First three and #8.)
CONFIG_PROVE_LOCKING -- Do all but two, covering CONFIG_PROVE_RCU and not.
CONFIG_PROVE_RCU -- Do all but one under CONFIG_PROVE_LOCKING.
CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing.
CONFIG_RCU_CPU_STALL_INFO -- Do one.
CONFIG_RCU_FANOUT -- Cover hierarchy as currently, but overlap with others.
CONFIG_RCU_FANOUT_EXACT -- Do one.
CONFIG_RCU_FANOUT_LEAF -- Do one non-default.
CONFIG_RCU_FAST_NO_HZ -- Do one, but not with CONFIG_RCU_NOCB_CPU_ALL.
CONFIG_RCU_NOCB_CPU -- Do three, see below.
CONFIG_RCU_NOCB_CPU_ALL -- Do one.
CONFIG_RCU_NOCB_CPU_NONE -- Do one.
CONFIG_RCU_NOCB_CPU_ZERO -- Do one.
CONFIG_RCU_TRACE -- Do half.
CONFIG_SMP -- Need one !SMP for PREEMPT_RCU.
RCU-bh: Do one with PREEMPT and one with !PREEMPT.
RCU-sched: Do one with PREEMPT but not BOOST.


Hierarchy:

TREE01.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=8, CONFIG_RCU_FANOUT_EXACT=n.
TREE02.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=3, CONFIG_RCU_FANOUT_EXACT=n,
	CONFIG_RCU_FANOUT_LEAF=3.
TREE03.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=4, CONFIG_RCU_FANOUT_EXACT=n,
	CONFIG_RCU_FANOUT_LEAF=4.
TREE04.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=2, CONFIG_RCU_FANOUT_EXACT=n,
	CONFIG_RCU_FANOUT_LEAF=2.
TREE05.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=6, CONFIG_RCU_FANOUT_EXACT=n
	CONFIG_RCU_FANOUT_LEAF=6.
TREE06.	CONFIG_NR_CPUS=8, CONFIG_RCU_FANOUT=6, CONFIG_RCU_FANOUT_EXACT=y
	CONFIG_RCU_FANOUT_LEAF=6.
TREE07.	CONFIG_NR_CPUS=16, CONFIG_RCU_FANOUT=2, CONFIG_RCU_FANOUT_EXACT=n,
	CONFIG_RCU_FANOUT_LEAF=2.
TREE08.	CONFIG_NR_CPUS=16, CONFIG_RCU_FANOUT=3, CONFIG_RCU_FANOUT_EXACT=y,
	CONFIG_RCU_FANOUT_LEAF=2.
TREE09.	CONFIG_NR_CPUS=1.


Kconfig Parameters Ignored:

CONFIG_64BIT

	Used only to check CONFIG_RCU_FANOUT value, inspection suffices.

CONFIG_NO_HZ_FULL_SYSIDLE_SMALL

	Defer until Frederic uses this.

CONFIG_PREEMPT_COUNT
CONFIG_PREEMPT_RCU

	Redundant with CONFIG_PREEMPT, ignore.

CONFIG_RCU_BOOST_DELAY

	Inspection suffices, ignore.

CONFIG_RCU_CPU_STALL_TIMEOUT

	Inspection suffices, ignore.

CONFIG_RCU_STALL_COMMON

	Implied by TREE_RCU and PREEMPT_RCU.

CONFIG_RCU_TORTURE_TEST
CONFIG_RCU_TORTURE_TEST_RUNNABLE

	Always used in KVM testing.

CONFIG_RCU_USER_QS

	Redundant with CONFIG_NO_HZ_FULL.

CONFIG_PREEMPT_RCU
CONFIG_TREE_RCU

	These are controlled by CONFIG_PREEMPT.
