1. 20 Apr, 2022 10 commits
    • Paul E. McKenney's avatar
      rcuscale: Allow rcuscale without RCU Tasks Rude/Trace · 5ce027f4
      Paul E. McKenney authored
      Currently, a CONFIG_PREEMPT_NONE=y kernel substitutes normal RCU for
      RCU Tasks Rude and RCU Tasks Trace.  Unless that kernel builds rcuscale,
      whether built-in or as a module, in which case these RCU Tasks flavors are
      (unnecessarily) built in.  This both increases kernel size and increases
      the complexity of certain tracing operations.  This commit therefore
      decouples the presence of rcuscale from the presence of RCU Tasks Rude
      and RCU Tasks Trace.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      5ce027f4
    • Paul E. McKenney's avatar
      rcuscale: Allow rcuscale without RCU Tasks · 4df002d9
      Paul E. McKenney authored
      Currently, a CONFIG_PREEMPT_NONE=y kernel substitutes normal RCU for
      RCU Tasks.  Unless that kernel builds rcuscale, whether built-in or as
      a module, in which case RCU Tasks is (unnecessarily) built.  This both
      increases kernel size and increases the complexity of certain tracing
      operations.  This commit therefore decouples the presence of rcuscale
      from the presence of RCU Tasks.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      4df002d9
    • Paul E. McKenney's avatar
      refscale: Allow refscale without RCU Tasks Rude/Trace · dec86781
      Paul E. McKenney authored
      Currently, a CONFIG_PREEMPT_NONE=y kernel substitutes normal RCU for
      RCU Tasks Rude and RCU Tasks Trace.  Unless that kernel builds refscale,
      whether built-in or as a module, in which case these RCU Tasks flavors are
      (unnecessarily) built in.  This both increases kernel size and increases
      the complexity of certain tracing operations.  This commit therefore
      decouples the presence of refscale from the presence of RCU Tasks Rude
      and RCU Tasks Trace.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      dec86781
    • Paul E. McKenney's avatar
      refscale: Allow refscale without RCU Tasks · 5f654af1
      Paul E. McKenney authored
      Currently, a CONFIG_PREEMPT_NONE=y kernel substitutes normal RCU for
      RCU Tasks.  Unless that kernel builds refscale, whether built-in or as a
      module, in which case RCU Tasks is (unnecessarily) built in.  This both
      increases kernel size and increases the complexity of certain tracing
      operations.  This commit therefore decouples the presence of refscale
      from the presence of RCU Tasks.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      5f654af1
    • Paul E. McKenney's avatar
      rcutorture: Allow specifying per-scenario stat_interval · 58524e0f
      Paul E. McKenney authored
      The rcutorture test suite makes double use of the rcutorture.stat_interval
      module parameter.  As its name suggests, it controls the frequency
      of statistics printing, but it also controls the rcu_torture_writer()
      stall timeout.  The current setting of 15 seconds works surprisingly well.
      However, given that the RCU tasks stall-warning timeout is ten -minutes-,
      15 seconds is too short for TASKS02, which runs a non-preemptible kernel
      on a single CPU.
      
      This commit therefore adds checks for per-scenario specification of the
      rcutorture.stat_interval module parameter.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      58524e0f
    • Paul E. McKenney's avatar
      rcutorture: Add CONFIG_PREEMPT_DYNAMIC=n to TASKS02 scenario · 3831fc02
      Paul E. McKenney authored
      Now that CONFIG_PREEMPT_DYNAMIC=y is the default, TASKS02 no longer
      builds a pure non-preemptible kernel that uses Tiny RCU.  This commit
      therefore fixes this new hole in rcutorture testing by adding
      CONFIG_PREEMPT_DYNAMIC=n to the TASKS02 rcutorture scenario.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      3831fc02
    • Paul E. McKenney's avatar
      rcutorture: Allow rcutorture without RCU Tasks Rude · 4c3f7b0e
      Paul E. McKenney authored
      Unless a kernel builds rcutorture, whether built-in or as a module, that
      kernel is also built with CONFIG_TASKS_RUDE_RCU, whether anything else
      needs Tasks Rude RCU or not.  This unnecessarily increases kernel size.
      This commit therefore decouples the presence of rcutorture from the
      presence of RCU Tasks Rude.
      
      However, there is a need to select CONFIG_TASKS_RUDE_RCU for testing
      purposes.  Except that casual users must not be bothered with
      questions -- for them, this needs to be fully automated.  There is
      thus a CONFIG_FORCE_TASKS_RUDE_RCU that selects CONFIG_TASKS_RUDE_RCU,
      is user-selectable, but which depends on CONFIG_RCU_EXPERT.
      
      [ paulmck: Apply kernel test robot feedback. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      4c3f7b0e
    • Paul E. McKenney's avatar
      rcutorture: Allow rcutorture without RCU Tasks · 3b6e1dd4
      Paul E. McKenney authored
      Currently, a CONFIG_PREEMPT_NONE=y kernel substitutes normal RCU for
      RCU Tasks.  Unless that kernel builds rcutorture, whether built-in or as
      a module, in which case RCU Tasks is (unnecessarily) used.  This both
      increases kernel size and increases the complexity of certain tracing
      operations.  This commit therefore decouples the presence of rcutorture
      from the presence of RCU Tasks.
      
      However, there is a need to select CONFIG_TASKS_RCU for testing purposes.
      Except that casual users must not be bothered with questions -- for them,
      this needs to be fully automated.  There is thus a CONFIG_FORCE_TASKS_RCU
      that selects CONFIG_TASKS_RCU, is user-selectable, but which depends
      on CONFIG_RCU_EXPERT.
      
      [ paulmck: Apply kernel test robot feedback. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      3b6e1dd4
    • Paul E. McKenney's avatar
      rcutorture: Allow rcutorture without RCU Tasks Trace · 40c1278a
      Paul E. McKenney authored
      Unless a kernel builds rcutorture, whether built-in or as a module, that
      kernel is also built with CONFIG_TASKS_TRACE_RCU, whether anything else
      needs Tasks Trace RCU or not.  This unnecessarily increases kernel size.
      This commit therefore decouples the presence of rcutorture from the
      presence of RCU Tasks Trace.
      
      However, there is a need to select CONFIG_TASKS_TRACE_RCU for
      testing purposes.  Except that casual users must not be bothered with
      questions -- for them, this needs to be fully automated.  There is thus
      a CONFIG_FORCE_TASKS_TRACE_RCU that selects CONFIG_TASKS_TRACE_RCU,
      is user-selectable, but which depends on CONFIG_RCU_EXPERT.
      
      [ paulmck: Apply kernel test robot feedback. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      40c1278a
    • Paul E. McKenney's avatar
      rcu: Make the TASKS_RCU Kconfig option be selected · 835f14ed
      Paul E. McKenney authored
      Currently, any kernel built with CONFIG_PREEMPTION=y also gets
      CONFIG_TASKS_RCU=y, which is not helpful to people trying to build
      preemptible kernels of minimal size.
      
      Because CONFIG_TASKS_RCU=y is needed only in kernels doing tracing of
      one form or another, this commit moves from TASKS_RCU deciding when it
      should be enabled to the tracing Kconfig options explicitly selecting it.
      This allows building preemptible kernels without TASKS_RCU, if desired.
      
      This commit also updates the SRCU-N and TREE09 rcutorture scenarios
      in order to avoid Kconfig errors that would otherwise result from
      CONFIG_TASKS_RCU being selected without its CONFIG_RCU_EXPERT dependency
      being met.
      
      [ paulmck: Apply BPF_SYSCALL feedback from Andrii Nakryiko. ]
      Reported-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
      Tested-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
      Tested-by: default avatarZhouyi Zhou <zhouzhouyi@gmail.com>
      Cc: Andrii Nakryiko <andrii@kernel.org>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
      835f14ed
  2. 12 Apr, 2022 1 commit
  3. 03 Apr, 2022 8 commits
  4. 02 Apr, 2022 21 commits