|  | 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. |