Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) # RCU-related configuration options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) menu "RCU Subsystem"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) config TREE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) 	default y if SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 	  This option selects the RCU implementation that is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) 	  designed for very large SMP system with hundreds or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 	  thousands of CPUs.  It also scales down nicely to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	  smaller systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) config PREEMPT_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	default y if PREEMPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 	select TREE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	  This option selects the RCU implementation that is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 	  designed for very large SMP systems with hundreds or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	  thousands of CPUs, but for which real-time response
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	  is also required.  It also scales down nicely to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	  smaller systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	  Select this option if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) config TINY_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	default y if !PREEMPTION && !SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	  This option selects the RCU implementation that is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	  designed for UP systems from which real-time response
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	  is not required.  This option greatly reduces the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	  memory footprint of RCU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) config RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	bool "Make expert-level adjustments to RCU configuration"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	  This option needs to be enabled if you wish to make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	  expert-level adjustments to RCU configuration.  By default,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	  no such adjustments can be made, which has the often-beneficial
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	  side-effect of preventing "make oldconfig" from asking you all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	  sorts of detailed questions about how you would like numerous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	  obscure RCU options to be set up.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	  Say Y if you need to make expert-level adjustments to RCU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	  Say N if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) config SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	  This option selects the sleepable version of RCU. This version
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	  permits arbitrary sleeping or blocking within RCU read-side critical
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	  sections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) config TINY_SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	default y if SRCU && TINY_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	  This option selects the single-CPU non-preemptible version of SRCU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) config TREE_SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	default y if SRCU && !TINY_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 	  This option selects the full-fledged version of SRCU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) config TASKS_RCU_GENERIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	def_bool TASKS_RCU || TASKS_RUDE_RCU || TASKS_TRACE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	select SRCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	  This option enables generic infrastructure code supporting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	  task-based RCU implementations.  Not for manual selection.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) config TASKS_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	def_bool PREEMPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	  This option enables a task-based RCU implementation that uses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	  only voluntary context switch (not preemption!), idle, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	  user-mode execution as quiescent states.  Not for manual selection.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) config TASKS_RUDE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	def_bool 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	  This option enables a task-based RCU implementation that uses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	  only context switch (including preemption) and user-mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	  execution as quiescent states.  It forces IPIs and context
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	  switches on all online CPUs, including idle ones, so use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 	  with caution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) config TASKS_TRACE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	def_bool 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	  This option enables a task-based RCU implementation that uses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	  explicit rcu_read_lock_trace() read-side markers, and allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	  these readers to appear in the idle loop as well as on the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	  hotplug code paths.  It can force IPIs on online CPUs, including
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	  idle ones, so use with caution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) config RCU_STALL_COMMON
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	def_bool TREE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	  This option enables RCU CPU stall code that is common between
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	  the TINY and TREE variants of RCU.  The purpose is to allow
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	  the tiny variants to disable RCU CPU stall warnings, while
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	  making these warnings mandatory for the tree variants.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) config RCU_NEED_SEGCBLIST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	def_bool ( TREE_RCU || TREE_SRCU )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) config RCU_FANOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	int "Tree-based hierarchical RCU fanout value"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	range 2 64 if 64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	range 2 32 if !64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	depends on TREE_RCU && RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	default 64 if 64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	default 32 if !64BIT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	  This option controls the fanout of hierarchical implementations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	  of RCU, allowing RCU to work efficiently on machines with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	  large numbers of CPUs.  This value must be at least the fourth
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	  root of NR_CPUS, which allows NR_CPUS to be insanely large.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	  The default value of RCU_FANOUT should be used for production
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	  systems, but if you are stress-testing the RCU implementation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	  itself, small RCU_FANOUT values allow you to test large-system
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	  code paths on small(er) systems.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	  Select a specific number if testing RCU itself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	  Take the default if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) config RCU_FANOUT_LEAF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	int "Tree-based hierarchical RCU leaf-level fanout value"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	range 2 64 if 64BIT && !RCU_STRICT_GRACE_PERIOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	range 2 32 if !64BIT && !RCU_STRICT_GRACE_PERIOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	range 2 3 if RCU_STRICT_GRACE_PERIOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 	depends on TREE_RCU && RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	default 16 if !RCU_STRICT_GRACE_PERIOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	default 2 if RCU_STRICT_GRACE_PERIOD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	  This option controls the leaf-level fanout of hierarchical
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	  implementations of RCU, and allows trading off cache misses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	  against lock contention.  Systems that synchronize their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	  scheduling-clock interrupts for energy-efficiency reasons will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 	  want the default because the smaller leaf-level fanout keeps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	  lock contention levels acceptably low.  Very large systems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 	  (hundreds or thousands of CPUs) will instead want to set this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	  value to the maximum value possible in order to reduce the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	  number of cache misses incurred during RCU's grace-period
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	  initialization.  These systems tend to run CPU-bound, and thus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	  are not helped by synchronized interrupts, and thus tend to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	  skew them, which reduces lock contention enough that large
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	  leaf-level fanouts work well.  That said, setting leaf-level
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 	  fanout to a large number will likely cause problematic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) 	  lock contention on the leaf-level rcu_node structures unless
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	  you boot with the skew_tick kernel parameter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	  Select a specific number if testing RCU itself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 	  Select the maximum permissible value for large systems, but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	  please understand that you may also need to set the skew_tick
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	  kernel boot parameter to avoid contention on the rcu_node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	  structure's locks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 	  Take the default if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) config RCU_FAST_NO_HZ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	bool "Accelerate last non-dyntick-idle CPU's grace periods"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 	depends on NO_HZ_COMMON && SMP && RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 	default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	  This option permits CPUs to enter dynticks-idle state even if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 	  they have RCU callbacks queued, and prevents RCU from waking
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	  these CPUs up more than roughly once every four jiffies (by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	  default, you can adjust this using the rcutree.rcu_idle_gp_delay
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	  parameter), thus improving energy efficiency.  On the other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	  hand, this option increases the duration of RCU grace periods,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	  for example, slowing down synchronize_rcu().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	  Say Y if energy efficiency is critically important, and you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	  	don't care about increased grace-period durations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	  Say N if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) config RCU_BOOST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 	bool "Enable RCU priority boosting"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	  This option boosts the priority of preempted RCU readers that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	  block the current preemptible RCU grace period for too long.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	  This option also prevents heavy loads from blocking RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	  callback invocation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	  Say Y here if you are working with real-time apps or heavy loads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 	  Say N here if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) config RCU_BOOST_DELAY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	int "Milliseconds to delay boosting after RCU grace-period start"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	range 0 3000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 	depends on RCU_BOOST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 	default 500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	  This option specifies the time to wait after the beginning of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	  a given grace period before priority-boosting preempted RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 	  readers blocking that grace period.  Note that any RCU reader
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) 	  blocking an expedited RCU grace period is boosted immediately.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	  Accept the default if unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) config RCU_NOCB_CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	bool "Offload RCU callback processing from boot-selected CPUs"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	depends on TREE_RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	depends on RCU_EXPERT || NO_HZ_FULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	default n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	  Use this option to reduce OS jitter for aggressive HPC or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 	  real-time workloads.	It can also be used to offload RCU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 	  callback invocation to energy-efficient CPUs in battery-powered
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	  asymmetric multiprocessors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	  This option offloads callback invocation from the set of CPUs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	  specified at boot time by the rcu_nocbs parameter.  For each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 	  such CPU, a kthread ("rcuox/N") will be created to invoke
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 	  callbacks, where the "N" is the CPU being offloaded, and where
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	  the "p" for RCU-preempt (PREEMPTION kernels) and "s" for RCU-sched
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	  (!PREEMPTION kernels).  Nothing prevents this kthread from running
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 	  on the specified CPUs, but (1) the kthreads may be preempted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) 	  between each callback, and (2) affinity or cgroups can be used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	  to force the kthreads to run on whatever set of CPUs is desired.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 	  Say Y here if you want to help to debug reduced OS jitter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 	  Say N here if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) config TASKS_TRACE_RCU_READ_MB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) 	bool "Tasks Trace RCU readers use memory barriers in user and idle"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 	depends on RCU_EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 	default PREEMPT_RT || NR_CPUS < 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 	  Use this option to further reduce the number of IPIs sent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) 	  to CPUs executing in userspace or idle during tasks trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 	  RCU grace periods.  Given that a reasonable setting of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) 	  the rcupdate.rcu_task_ipi_delay kernel boot parameter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 	  eliminates such IPIs for many workloads, proper setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) 	  of this Kconfig option is important mostly for aggressive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 	  real-time installations and for battery-powered devices,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 	  hence the default chosen above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) 	  Say Y here if you hate IPIs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 	  Say N here if you hate read-side memory barriers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) 	  Take the default if you are unsure.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) endmenu # "RCU Subsystem"