1. 16 Apr, 2019 1 commit
  2. 09 Apr, 2019 2 commits
    • Paul E. McKenney's avatar
      Merge branches 'consolidate.2019.04.09a', 'doc.2019.03.26b',... · 6cdbc07a
      Paul E. McKenney authored
      Merge branches 'consolidate.2019.04.09a', 'doc.2019.03.26b', 'fixes.2019.03.26b', 'srcu.2019.03.26b', 'stall.2019.03.26b' and 'torture.2019.03.26b' into HEAD
      
      consolidate.2019.04.09a: Lingering RCU flavor consolidation cleanups.
      doc.2019.03.26b: Documentation updates.
      fixes.2019.03.26b: Miscellaneous fixes.
      srcu.2019.03.26b: SRCU updates.
      stall.2019.03.26b: RCU CPU stall warning updates.
      torture.2019.03.26b: Torture-test updates.
      6cdbc07a
    • Paul E. McKenney's avatar
      net/ipv4/netfilter: Update comment from call_rcu_bh() to call_rcu() · bee58fe3
      Paul E. McKenney authored
      The RCU flavors have been consolidated, so this commit replaces a
      comment's mention of call_rcu_bh() with call_rcu().
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Cc: Florian Westphal <fw@strlen.de>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
      Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
      Cc: <netfilter-devel@vger.kernel.org>
      Cc: <coreteam@netfilter.org>
      Cc: <netdev@vger.kernel.org>
      Acked-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      bee58fe3
  3. 04 Apr, 2019 1 commit
  4. 27 Mar, 2019 1 commit
  5. 26 Mar, 2019 35 commits
    • Paul E. McKenney's avatar
      torture: Suppress false-positive CONFIG_INITRAMFS_SOURCE complaint · 164a4daa
      Paul E. McKenney authored
      The scripting must supply the CONFIG_INITRAMFS_SOURCE Kconfig option
      so that kbuild can find the desired initrd, but the configcheck.sh
      script gets confused by this option because it takes a string instead
      of the expected y/n/m.  This causes checkconfig.sh to complain about
      CONFIG_INITRAMFS_SOURCE in the torture-test output (though not in the
      summary).  As more people use rcutorture, the resulting confusion is
      an increasing concern.
      
      This commit therefore suppresses this false-positive warning by filtering
      CONFIG_INITRAMFS_SOURCE from within the checkconfig.sh script.
      Reported-by: default avatarJoel Fernandes <joel@joelfernandes.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      164a4daa
    • Paul E. McKenney's avatar
      locktorture: NULL cxt.lwsa and cxt.lrsa to allow bad-arg detection · a9d6938d
      Paul E. McKenney authored
      Currently, lock_torture_cleanup() uses the values of cxt.lwsa and cxt.lrsa
      to detect bad parameters that prevented locktorture from initializing,
      let alone running.  In this case, lock_torture_cleanup() does no cleanup
      aside from invoking torture_cleanup_begin() and torture_cleanup_end(),
      as required to permit future torture tests to run.  However, this
      heuristic fails if the run with bad parameters was preceded by a previous
      run that actually ran:  In this case, both cxt.lwsa and cxt.lrsa will
      remain non-zero, which means that the current lock_torture_cleanup()
      invocation will be unable to detect the fact that it should skip cleanup,
      which can result in charming outcomes such as double frees.
      
      This commit therefore NULLs out both cxt.lwsa and cxt.lrsa at the end
      of any run that actually ran.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Cc: Davidlohr Bueso <dave@stgolabs.net>
      Cc: Josh Triplett <josh@joshtriplett.org>
      a9d6938d
    • Paul E. McKenney's avatar
      rcuperf: Fix cleanup path for invalid perf_type strings · ad092c02
      Paul E. McKenney authored
      If the specified rcuperf.perf_type is not in the rcu_perf_init()
      function's perf_ops[] array, rcuperf prints some console messages and
      then invokes rcu_perf_cleanup() to set state so that a future torture
      test can run.  However, rcu_perf_cleanup() also attempts to end the
      test that didn't actually start, and in doing so relies on the value
      of cur_ops, a value that is not particularly relevant in this case.
      This can result in confusing output or even follow-on failures due to
      attempts to use facilities that have not been properly initialized.
      
      This commit therefore sets the value of cur_ops to NULL in this case and
      inserts a check near the beginning of rcu_perf_cleanup(), thus avoiding
      relying on an irrelevant cur_ops value.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      ad092c02
    • Paul E. McKenney's avatar
      rcutorture: Fix cleanup path for invalid torture_type strings · b813afae
      Paul E. McKenney authored
      If the specified rcutorture.torture_type is not in the rcu_torture_init()
      function's torture_ops[] array, rcutorture prints some console messages
      and then invokes rcu_torture_cleanup() to set state so that a future
      torture test can run.  However, rcu_torture_cleanup() also attempts to
      end the test that didn't actually start, and in doing so relies on the
      value of cur_ops, a value that is not particularly relevant in this case.
      This can result in confusing output or even follow-on failures due to
      attempts to use facilities that have not been properly initialized.
      
      This commit therefore sets the value of cur_ops to NULL in this case
      and inserts a check near the beginning of rcu_torture_cleanup(),
      thus avoiding relying on an irrelevant cur_ops value.
      Reported-by: default avatarkernel test robot <rong.a.chen@intel.com>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      b813afae
    • Neeraj Upadhyay's avatar
      rcutorture: Fix expected forward progress duration in OOM notifier · d44ac1be
      Neeraj Upadhyay authored
      The rcutorture_oom_notify() function has a misplaced close parenthesis
      that results in increasingly long delays in rcu_fwd_progress_check()'s
      checking for various RCU forward-progress problems.  This commit therefore
      puts the parenthesis in the right place.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      d44ac1be
    • Paul E. McKenney's avatar
      rcutorture: Remove ->ext_irq_conflict field · f47cb1bb
      Paul E. McKenney authored
      Back when there was a separate RCU-bh flavor, the ->ext_irq_conflict
      field was used to prevent executing local_bh_enable() while interrupts
      were disabled.  However, there is no longer an RCU-bh flavor, so this
      commit removes the no-longer-needed ->ext_irq_conflict field.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      f47cb1bb
    • Paul E. McKenney's avatar
      rcutorture: Make rcutorture_extend_mask() comment match the code · a3b0e1e5
      Paul E. McKenney authored
      The code actually rarely uses more than one type of RCU read-side
      protection, as is actually desired given that we need some reasonable
      probability of preempting RCU read-side critical sections, which cannot
      happen with multiple types of protection.  This comment therefore adjusts
      the comment.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      a3b0e1e5
    • Paul E. McKenney's avatar
      tools/.../rcutorture: Convert to SPDX license identifier · fef141f6
      Paul E. McKenney authored
      Replace the license boiler plate with a SPDX license identifier.
      While in the area, update an email address and add copyright notices.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      fef141f6
    • Paul E. McKenney's avatar
      torture: Don't try to offline the last CPU · 24aca4ae
      Paul E. McKenney authored
      If there is only one online CPU, it doesn't make sense to try to offline
      it, as any such attempt is guaranteed to fail.  This commit therefore
      check for this condition and refuses to attempt the nonsensical.
      Reported-by: default avatarSu Yue <suy.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Tested-By: default avatarSu Yue <suy.fnst@cn.fujitsu.com>
      24aca4ae
    • Neeraj Upadhyay's avatar
      rcu: Fix nohz status in stall warning · 6c70e9cd
      Neeraj Upadhyay authored
      The Documentation/RCU/stallwarn.txt file says that stall warnings
      print "D" if dyntick-idle processing is enabled, but the code in
      print_cpu_stall_fast_no_hz() prints "." instead.  This commit therefore
      reverses the sense of the test to make the code match the documentation.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      6c70e9cd
    • Paul E. McKenney's avatar
      rcu: Move forward-progress checkers into tree_stall.h · b51bcbbf
      Paul E. McKenney authored
      This commit further consolidates stall-warning functionality by moving
      forward-progress checkers into kernel/rcu/tree_stall.h, updating a
      comment or two while in the area.  More specifically, this commit moves
      show_rcu_gp_kthreads(), rcu_check_gp_start_stall(), rcu_fwd_progress_check(),
      sysrq_rcu, sysrq_show_rcu(), sysrq_rcudump_op, and rcu_sysrq_init() from
      kernel/rcu/tree.c to kernel/rcu/tree_stall.h.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      b51bcbbf
    • Paul E. McKenney's avatar
      rcu: Move irq-disabled stall-warning checking to tree_stall.h · 7ac1907c
      Paul E. McKenney authored
      The rcu_iw_handler() function's sole purpose in life is to indicate
      whether a stalled CPU had interrupts disabled, so it belongs in
      kernel/rcu/tree_stall.h.  This commit therefore makes that move,
      clarifying its header comment while in the area.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      7ac1907c
    • Paul E. McKenney's avatar
      rcu: Organize functions in tree_stall.h · e23344c2
      Paul E. McKenney authored
      This commit does only code movement, removal of now-unneeded forward
      declarations, and addition of comments.  It organizes the functions
      that implement RCU CPU stall warnings for normal grace periods into
      three categories:
      
      1.	Control of RCU CPU stall warnings, including computing timeouts.
      
      2.	Interaction of stall warnings with grace periods.
      
      3.	Actual printing of the RCU CPU stall-warning messages.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      e23344c2
    • Paul E. McKenney's avatar
      rcu: Move FAST_NO_HZ stall-warning code to tree_stall.h · 59b73a27
      Paul E. McKenney authored
      This commit further consolidates the stall-warning code by moving
      print_cpu_stall_info() and its helper functions along with
      zero_cpu_stall_ticks() to kernel/rcu/tree_stall.h.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      59b73a27
    • Paul E. McKenney's avatar
      rcu: Inline RCU stall-warning info helper functions · 40e69ac7
      Paul E. McKenney authored
      The print_cpu_stall_info_begin() and print_cpu_stall_info_end() print a
      single character each onto the console, and are a holdover from a time
      when RCU CPU stall warning messages could be abbreviated using a long-gone
      Kconfig option.  This commit therefore adds these single characters to
      already-printed strings in the calling functions, and then eliminates
      both print_cpu_stall_info_begin() and print_cpu_stall_info_end().
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      40e69ac7
    • Paul E. McKenney's avatar
      rcu: Move rcu_print_task_exp_stall() to tree_exp.h · d87cda50
      Paul E. McKenney authored
      Because expedited CPU stall warnings are contained within the
      kernel/rcu/tree_exp.h file, rcu_print_task_exp_stall() should live
      there too.  This commit carries out the required code motion.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      d87cda50
    • Paul E. McKenney's avatar
      rcu: Inline RCU task stall-warning helper functions · 21d0d79a
      Paul E. McKenney authored
      The rcu_print_detail_task_stall(), rcu_print_task_stall_begin(), and
      rcu_print_task_stall_end() functions were defined to allow long-gone
      Kconfig options to provide an abbreviated RCU CPU stall warning printout.
      This commit saves a few lines of code by inlining them into their sole
      callers.
      
      While in the area, a useless call of rcu_print_detail_task_stall_rnp()
      on the root rcu_node structure was eliminated.  If there is only one
      rcu_node structure, its tasks get printed twice, but if there are more,
      the root rcu_node structure is guaranteed to have an empty list of blocked
      tasks, hence the uselessness.  (Long ago, root rcu_node structures with
      non-empty ->blkd_tasks lists could happen, but no longer.)
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      21d0d79a
    • Paul E. McKenney's avatar
      rcu: Move RCU CPU stall-warning code out of tree.c · 32255d51
      Paul E. McKenney authored
      This commit completes the process of consolidating the code for RCU CPU
      stall warnings for normal grace periods by moving the remaining such
      code from kernel/rcu/tree.c to kernel/rcu/tree_stall.h.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      32255d51
    • Paul E. McKenney's avatar
      rcu: Move RCU CPU stall-warning code out of tree_plugin.h · 3fc3d170
      Paul E. McKenney authored
      The RCU CPU stall-warning code for normal grace periods is currently
      scattered across two files, due to earlier Tiny RCU support for RCU
      CPU stall warnings and for old Kconfig options that have long since
      been retired.  Given that it is hard for the lead RCU maintainer to
      find relevant stall-warning code, it would be good to consolidate it.
      This commit continues this process by moving stall-warning code from
      kernel/rcu/tree_plugin.c to a new kernel/rcu/tree_stall.h file.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      3fc3d170
    • Paul E. McKenney's avatar
      rcu: Move RCU CPU stall-warning code out of update.c · 10462d6f
      Paul E. McKenney authored
      The RCU CPU stall-warning code for normal grace periods is currently
      scattered across three files, due to earlier Tiny RCU support for RCU
      CPU stall warnings and for old Kconfig options that have long since
      been retired.  Given that it is hard for the lead RCU maintainer to
      find relevant stall-warning code, it would be good to consolidate it.
      This commit starts this process by moving stall-warning code from
      kernel/rcu/update.c to a new kernel/rcu/tree_stall.h file.
      
      Note that the definitions of rcu_cpu_stall_suppress and
      rcu_cpu_stall_timeout must remain in kernel/rcu/update.h to provide
      compatibility for kernel boot parameter lists.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      10462d6f
    • Paul E. McKenney's avatar
      srcu: Remove cleanup_srcu_struct_quiesced() · f5ad3991
      Paul E. McKenney authored
      The cleanup_srcu_struct_quiesced() function was added because NVME
      used WQ_MEM_RECLAIM workqueues and SRCU did not, which meant that
      NVME workqueues waiting on SRCU workqueues could result in deadlocks
      during low-memory conditions.  However, SRCU now also has WQ_MEM_RECLAIM
      workqueues, so there is no longer a potential for deadlock.  Furthermore,
      it turns out to be extremely hard to use cleanup_srcu_struct_quiesced()
      correctly due to the fact that SRCU callback invocation accesses the
      srcu_struct structure's per-CPU data area just after callbacks are
      invoked.  Therefore, the usual practice of using srcu_barrier() to wait
      for callbacks to be invoked before invoking cleanup_srcu_struct_quiesced()
      fails because SRCU's callback-invocation workqueue handler might be
      delayed, which can result in cleanup_srcu_struct_quiesced() being invoked
      (and thus freeing the per-CPU data) before the SRCU's callback-invocation
      workqueue handler is finished using that per-CPU data.  Nor is this a
      theoretical problem: KASAN emitted use-after-free warnings because of
      this problem on actual runs.
      
      In short, NVME can now safely invoke cleanup_srcu_struct(), which
      avoids the use-after-free scenario.  And cleanup_srcu_struct_quiesced()
      is quite difficult to use safely.  This commit therefore removes
      cleanup_srcu_struct_quiesced(), switching its sole user back to
      cleanup_srcu_struct().  This effectively reverts the following pair
      of commits:
      
      f7194ac3 ("srcu: Add cleanup_srcu_struct_quiesced()")
      4317228a ("nvme: Avoid flush dependency in delete controller flow")
      Reported-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Reviewed-by: default avatarBart Van Assche <bvanassche@acm.org>
      Tested-by: default avatarBart Van Assche <bvanassche@acm.org>
      f5ad3991
    • Paul E. McKenney's avatar
      srcu: Check for in-flight callbacks in _cleanup_srcu_struct() · 5cdfd174
      Paul E. McKenney authored
      If someone fails to drain the corresponding SRCU callbacks (for
      example, by failing to invoke srcu_barrier()) before invoking either
      cleanup_srcu_struct() or cleanup_srcu_struct_quiesced(), the resulting
      diagnostic is an ambiguous use-after-free diagnostic, and even then
      only if you are running something like KASAN.  This commit therefore
      improves SRCU diagnostics by adding checks for in-flight callbacks at
      _cleanup_srcu_struct() time.
      
      Note that these diagnostics can still be defeated, for example, by
      invoking call_srcu() concurrently with cleanup_srcu_struct().  Which is
      a really bad idea, but sometimes all too easy to do.  But even then,
      these diagnostics have at least some probability of catching the problem.
      Reported-by: default avatarSagi Grimberg <sagi@grimberg.me>
      Reported-by: default avatarBart Van Assche <bvanassche@acm.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Tested-by: default avatarBart Van Assche <bvanassche@acm.org>
      5cdfd174
    • Paul E. McKenney's avatar
      rcu: Correct READ_ONCE()/WRITE_ONCE() for ->rcu_read_unlock_special · add0d37b
      Paul E. McKenney authored
      The task_struct structure's ->rcu_read_unlock_special field is only ever
      read or written by the owning task, but it is accessed both at process
      and interrupt levels.  It may therefore be accessed using plain reads
      and writes while interrupts are disabled, but must be accessed using
      READ_ONCE() and WRITE_ONCE() or better otherwise.  This commit makes a
      few adjustments to align with this discipline.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      add0d37b
    • Paul E. McKenney's avatar
      rcu: Fix typo in tree_exp.h comment · f1a98045
      Paul E. McKenney authored
      This commit changes a rcu_exp_handler() comment from rcu_preempt_defer_qs()
      to rcu_preempt_deferred_qs() in order to better match reality.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      f1a98045
    • Paul E. McKenney's avatar
      rcu: Eliminate redundant NULL-pointer check · a2badefa
      Paul E. McKenney authored
      Because rcu_wake_cond() checks for a null task_struct pointer, there is
      no need for its callers to do so.  This commit eliminates the redundant
      check.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      a2badefa
    • Zhouyi Zhou's avatar
      rcu: Fix force_qs_rnp() header comment · 5d8a752e
      Zhouyi Zhou authored
      Previously, threads blocked on offlining CPUS were migrated to the
      root rcu_node structure, thus requiring RCU priority boosting on this
      structure.  However, since commit d19fb8d1 ("rcu: Don't migrate
      blocked tasks even if all corresponding CPUs offline"), RCU does not
      migrate blocked tasks.  Consequently, RCU no longer does RCU priority
      boosting on the root rcu_node structure as of commit 1be0085b ("rcu:
      Don't initiate RCU priority boosting on root rcu_node").
      
      This commit therefore brings comments for the force_qs_rnp() function's
      header comment in line with this new no-root-boosting reality.
      Signed-off-by: default avatarZhouyi Zhou <zhouzhouyi@gmail.com>
      [ paulmck: Also remove obsolete comment on suppressing new grace periods. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      5d8a752e
    • Paul E. McKenney's avatar
      rcu: Update jiffies_to_sched_qs and adjust_jiffies_till_sched_qs() comments · 85f2b60c
      Paul E. McKenney authored
      This commit better documents the jiffies_to_sched_qs default-value
      strategy used by adjust_jiffies_till_sched_qs()
      Reported-by: default avatarJoel Fernandes <joel@joelfernandes.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      85f2b60c
    • Neeraj Upadhyay's avatar
      rcu: Do a single rhp->func read in rcu_head_after_call_rcu() · b699cce1
      Neeraj Upadhyay authored
      The rcu_head_after_call_rcu() function reads the rhp->func pointer twice,
      which can result in a false-positive WARN_ON_ONCE() if the callback
      were passed to call_rcu() between the two reads.  Although racing
      rcu_head_after_call_rcu() with call_rcu() is to be a dubious use case
      (the return value is not reliable in that case), intermittent and
      irreproducible warnings are also quite dubious.  This commit therefore
      uses a single READ_ONCE() to pick up the value of rhp->func once, then
      tests that value twice, thus guaranteeing consistent processing within
      rcu_head_after_call_rcu()().
      
      Neverthless, racing rcu_head_after_call_rcu() with call_rcu() is still
      a dubious use case.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      [ paulmck: Add blank line after declaration per checkpatch.pl. ]
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      b699cce1
    • Neeraj Upadhyay's avatar
      rcu: Default jiffies_to_sched_qs to jiffies_till_sched_qs · 6973032a
      Neeraj Upadhyay authored
      The current code only calls adjust_jiffies_till_sched_qs() if
      jiffies_till_sched_qs is left at its default value, so when the
      jiffies_till_sched_qs kernel-boot parameter actually is specified,
      jiffies_to_sched_qs will be left with the value zero, which
      will result in useless slowdowns of cond_resched().  This commit
      therefore changes rcu_init_geometry() to unconditionally invoke
      adjust_jiffies_till_sched_qs(), which ensures that jiffies_to_sched_qs
      will be initialized in all cases, thus maintaining good cond_resched()
      performance.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      6973032a
    • Neeraj Upadhyay's avatar
      rcu: Fix self-wakeups for grace-period kthread · 0f58d2ac
      Neeraj Upadhyay authored
      The current rcu_gp_kthread_wake() function uses in_interrupt()
      and thus does a self-wakeup from all interrupt contexts, including
      the pointless case where the GP kthread happens to be running with
      bottom halves disabled, along with the impossible case where the GP
      kthread is running within an NMI handler (you are not supposed to invoke
      rcu_gp_kthread_wake() from within an NMI handler.  This commit therefore
      replaces the in_interrupt() with in_irq(), so that the self-wakeups
      happen only from handlers for hardware interrupts and softirqs.
      This also makes the code match the comment.
      Signed-off-by: default avatarNeeraj Upadhyay <neeraju@codeaurora.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Acked-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      0f58d2ac
    • Paul E. McKenney's avatar
      rcu: Report error for bad rcu_nocbs= parameter values · 497e4260
      Paul E. McKenney authored
      This commit prints a console message when cpulist_parse() reports a
      bad list of CPUs, and sets all CPUs' bits in that case.  The reason for
      setting all CPUs' bits is that this is the safe(r) choice for real-time
      workloads, which would normally be the ones using the rcu_nocbs= kernel
      boot parameter.  Either way, later RCU console log messages list the
      actual set of CPUs whose RCU callbacks will be offloaded.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      497e4260
    • Paul E. McKenney's avatar
      rcu: Allow rcu_nocbs= to specify all CPUs · da8739f2
      Paul E. McKenney authored
      Currently, the rcu_nocbs= kernel boot parameter requires that a specific
      list of CPUs be specified, and has no way to say "all of them".
      As noted by user RavFX in a comment to Phoronix topic 1002538, this
      is an inconvenient side effect of the removal of the RCU_NOCB_CPU_ALL
      Kconfig option.  This commit therefore enables the rcu_nocbs= kernel boot
      parameter to be given the string "all", as in "rcu_nocbs=all" to specify
      that all CPUs on the system are to have their RCU callbacks offloaded.
      
      Another approach would be to make cpulist_parse() check for "all", but
      there are uses of cpulist_parse() that do other checking, which could
      conflict with an "all".  This commit therefore focuses on the specific
      use of cpulist_parse() in rcu_nocb_setup().
      
      Just a note to other people who would like changes to Linux-kernel RCU:
      If you send your requests to me directly, they might get fixed somewhat
      faster.  RavFX's comment was posted on January 22, 2018 and I first saw
      it on March 5, 2019.  And the only reason that I found it -at- -all- was
      that I was looking for projects using RCU, and my search engine showed
      me that Phoronix comment quite by accident.  Your choice, though!  ;-)
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      da8739f2
    • Akira Yokosawa's avatar
      rcu: Move common code out of if-else block · b2eb85b4
      Akira Yokosawa authored
      As the result of recent addition of "rdp->core_needs_qs = false;" in
      the "if" block, now both branches of the if-else have the same
      assignment.
      
      Factor it out and reduce line count.
      Signed-off-by: default avatarAkira Yokosawa <akiyks@gmail.com>
      Cc: Joel Fernandes <joel@joelfernandes.org>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      Acked-by: default avatarJoel Fernandes (Google) <joel@joelfernandes.org>
      b2eb85b4
    • Paul E. McKenney's avatar
      9145b505
    • Paul E. McKenney's avatar
      MAINTAINERS: RCU now has its own email list · bdead419
      Paul E. McKenney authored
      This commit makes rcu@vger.kernel.org be the official list for RCU-related
      topics.
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      bdead419