Skip to content
Snippets Groups Projects
  1. Mar 26, 2019
  2. Mar 04, 2019
  3. Jan 25, 2019
    • Junchang Wang's avatar
      RCU/torture.txt: Remove section MODULE PARAMETERS · 6684880a
      Junchang Wang authored
      
      The supported module parameters are detailed in both RCU/torture.txt and
      admin-guide/kernel-parameters.txt, and the latter is actively maintained.
      So this patch removes section MODULE PARAMETERS in torture.txt and
      adds a reference to the information in kernel-parameters.txt.
      
      Signed-off-by: default avatarJunchang Wang <junchangwang@gmail.com>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      [ paulmck: Add search string. ]
      6684880a
    • Paul E. McKenney's avatar
      rcu: Rename rcu_process_callbacks() to rcu_core() for Tree RCU · fb60e533
      Paul E. McKenney authored
      
      Although the name rcu_process_callbacks() still makes sense for Tiny
      RCU, where most of what it does is invoke callbacks, it no longer makes
      much sense for Tree RCU, especially given that the actually callback
      invocation is relegated to rcu_do_batch(), or, for no-CBs CPUs, to the
      rcuo kthreads.  Especially in the latter case, rcu_process_callbacks()
      has very little to do with actual callbacks.  A better description of
      this function is that it performs RCU's core processing.
      
      This commit therefore changes the name of Tree RCU's rcu_process_callbacks()
      function to rcu_core(), which also has the virtue of being consistent with
      the existing invoke_rcu_core() function.
      
      While in the area, the header comment is reworked.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      fb60e533
    • Paul E. McKenney's avatar
      rcu: Rename rcu_check_callbacks() to rcu_sched_clock_irq() · c98cac60
      Paul E. McKenney authored
      
      The name rcu_check_callbacks() arguably made sense back in the early
      2000s when RCU was quite a bit simpler than it is today, but it has
      become quite misleading, especially with the advent of dyntick-idle
      and NO_HZ_FULL.  The rcu_check_callbacks() function is RCU's hook into
      the scheduling-clock interrupt, and is now but one of many ways that
      callbacks get promoted to invocable state.
      
      This commit therefore changes the name to rcu_sched_clock_irq(),
      which is the same number of characters and clearly indicates this
      function's relation to the rest of the Linux kernel.  In addition, for
      the sake of consistency, rcu_flavor_check_callbacks() is also renamed
      to rcu_flavor_sched_clock_irq().
      
      While in the area, the header comments for both functions are reworked.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      c98cac60
    • Junchang Wang's avatar
      doc: Fix outdated links · 87d1779d
      Junchang Wang authored
      
      Fix outdated links in whatisRCU.txt.
      
      Signed-off-by: default avatarJunchang Wang <junchangwang@gmail.com>
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      87d1779d
    • Paul E. McKenney's avatar
      doc: CPU-hotplug notifiers cannot invoke synchronize_srcu() or srcu_barrier() · 6efebf84
      Paul E. McKenney authored
      
      SRCU's synchronize_srcu() may not be invoked from CPU-hotplug notifiers,
      due to the fact that SRCU grace periods make use of timers and the
      possibility of timers being temporarily stranded on the outgoing CPU.
      This stranding of timers means that timers posted to the outgoing CPU
      will not fire until late in the CPU-hotplug process.  The problem is
      that if a notifier is waiting on an SRCU grace period, that grace period
      is waiting on a timer, and that timer is stranded on the outgoing CPU,
      then the notifier will never be awakened, in other words, deadlock has
      occurred.  This same situation of course also prohibits srcu_barrier()
      from being invoked from CPU-hotplug notifiers.
      
      This commit therefore updates the requirements to include this restriction.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      6efebf84
    • Paul E. McKenney's avatar
      rcu: Discard separate per-CPU callback counts · 260e1e4f
      Paul E. McKenney authored
      
      Back when there were multiple flavors of RCU, it was necessary to
      separately count lazy and non-lazy callbacks for each CPU.  These counts
      were used in CONFIG_RCU_FAST_NO_HZ kernels to determine how long a newly
      idle CPU should be allowed to sleep before handling its RCU callbacks.
      But now that there is only one flavor, the callback counts for a given
      CPU's sole rcu_data structure are the counts for that CPU.
      
      This commit therefore removes the rcu_data structure's ->nonlazy_posted
      and ->nonlazy_posted_snap fields, the rcu_idle_count_callbacks_posted()
      and rcu_cpu_has_callbacks() functions, repurposes the rcu_data structure's
      ->all_lazy field to record the laziness state at the beginning of the
      latest idle sojourn, and modifies CONFIG_RCU_FAST_NO_HZ RCU CPU stall
      warnings accordingly.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      260e1e4f
    • Paul E. McKenney's avatar
      rcu: Determine expedited-GP IPI handler at build time · 142d106d
      Paul E. McKenney authored
      
      Back when there could be multiple RCU flavors running in the same kernel
      at the same time, it was necessary to specify the expedited grace-period
      IPI handler at runtime.  Now that there is only one RCU flavor, the
      IPI handler can be determined at build time.  There is therefore no
      longer any reason for the RCU-preempt and RCU-sched IPI handlers to
      have different names, nor is there any reason to pass these handlers in
      function arguments and in the data structures enclosing workqueues.
      
      This commit therefore makes all these changes, pushing the specification
      of the expedited grace-period IPI handler down to the point of use.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
      142d106d
  4. Nov 12, 2018
  5. Nov 09, 2018
  6. Sep 09, 2018
    • Henrik Austad's avatar
      Drop all 00-INDEX files from Documentation/ · a7ddcea5
      Henrik Austad authored
      
      This is a respin with a wider audience (all that get_maintainer returned)
      and I know this spams a *lot* of people. Not sure what would be the correct
      way, so my apologies for ruining your inbox.
      
      The 00-INDEX files are supposed to give a summary of all files present
      in a directory, but these files are horribly out of date and their
      usefulness is brought into question. Often a simple "ls" would reveal
      the same information as the filenames are generally quite descriptive as
      a short introduction to what the file covers (it should not surprise
      anyone what Documentation/sched/sched-design-CFS.txt covers)
      
      A few years back it was mentioned that these files were no longer really
      needed, and they have since then grown further out of date, so perhaps
      it is time to just throw them out.
      
      A short status yields the following _outdated_ 00-INDEX files, first
      counter is files listed in 00-INDEX but missing in the directory, last
      is files present but not listed in 00-INDEX.
      
      List of outdated 00-INDEX:
      Documentation: (4/10)
      Documentation/sysctl: (0/1)
      Documentation/timers: (1/0)
      Documentation/blockdev: (3/1)
      Documentation/w1/slaves: (0/1)
      Documentation/locking: (0/1)
      Documentation/devicetree: (0/5)
      Documentation/power: (1/1)
      Documentation/powerpc: (0/5)
      Documentation/arm: (1/0)
      Documentation/x86: (0/9)
      Documentation/x86/x86_64: (1/1)
      Documentation/scsi: (4/4)
      Documentation/filesystems: (2/9)
      Documentation/filesystems/nfs: (0/2)
      Documentation/cgroup-v1: (0/2)
      Documentation/kbuild: (0/4)
      Documentation/spi: (1/0)
      Documentation/virtual/kvm: (1/0)
      Documentation/scheduler: (0/2)
      Documentation/fb: (0/1)
      Documentation/block: (0/1)
      Documentation/networking: (6/37)
      Documentation/vm: (1/3)
      
      Then there are 364 subdirectories in Documentation/ with several files that
      are missing 00-INDEX alltogether (and another 120 with a single file and no
      00-INDEX).
      
      I don't really have an opinion to whether or not we /should/ have 00-INDEX,
      but the above 00-INDEX should either be removed or be kept up to date. If
      we should keep the files, I can try to keep them updated, but I rather not
      if we just want to delete them anyway.
      
      As a starting point, remove all index-files and references to 00-INDEX and
      see where the discussion is going.
      
      Signed-off-by: default avatarHenrik Austad <henrik@austad.us>
      Acked-by: default avatar"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Just-do-it-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Reviewed-by: default avatarJens Axboe <axboe@kernel.dk>
      Acked-by: default avatarPaul Moore <paul@paul-moore.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: default avatarMark Brown <broonie@kernel.org>
      Acked-by: default avatarMike Rapoport <rppt@linux.vnet.ibm.com>
      Cc: [Almost everybody else]
      Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
      a7ddcea5
  7. Aug 30, 2018
    • Paul E. McKenney's avatar
      rcu: Defer reporting RCU-preempt quiescent states when disabled · 3e310098
      Paul E. McKenney authored
      
      This commit defers reporting of RCU-preempt quiescent states at
      rcu_read_unlock_special() time when any of interrupts, softirq, or
      preemption are disabled.  These deferred quiescent states are reported
      at a later RCU_SOFTIRQ, context switch, idle entry, or CPU-hotplug
      offline operation.  Of course, if another RCU read-side critical
      section has started in the meantime, the reporting of the quiescent
      state will be further deferred.
      
      This also means that disabling preemption, interrupts, and/or
      softirqs will act as an RCU-preempt read-side critical section.
      This is enforced by checking preempt_count() as needed.
      
      Some special cases must be handled on an ad-hoc basis, for example,
      context switch is a quiescent state even though both the scheduler and
      do_exit() disable preemption.  In these cases, additional calls to
      rcu_preempt_deferred_qs() override the preemption disabling.  Similar
      logic overrides disabled interrupts in rcu_preempt_check_callbacks()
      because in this case the quiescent state happened just before the
      corresponding scheduling-clock interrupt.
      
      In theory, this change lifts a long-standing restriction that required
      that if interrupts were disabled across a call to rcu_read_unlock()
      that the matching rcu_read_lock() also be contained within that
      interrupts-disabled region of code.  Because the reporting of the
      corresponding RCU-preempt quiescent state is now deferred until
      after interrupts have been enabled, it is no longer possible for this
      situation to result in deadlocks involving the scheduler's runqueue and
      priority-inheritance locks.  This may allow some code simplification that
      might reduce interrupt latency a bit.  Unfortunately, in practice this
      would also defer deboosting a low-priority task that had been subjected
      to RCU priority boosting, so real-time-response considerations might
      well force this restriction to remain in place.
      
      Because RCU-preempt grace periods are now blocked not only by RCU
      read-side critical sections, but also by disabling of interrupts,
      preemption, and softirqs, it will be possible to eliminate RCU-bh and
      RCU-sched in favor of RCU-preempt in CONFIG_PREEMPT=y kernels.  This may
      require some additional plumbing to provide the network denial-of-service
      guarantees that have been traditionally provided by RCU-bh.  Once these
      are in place, CONFIG_PREEMPT=n kernels will be able to fold RCU-bh
      into RCU-sched.  This would mean that all kernels would have but
      one flavor of RCU, which would open the door to significant code
      cleanup.
      
      Moving to a single flavor of RCU would also have the beneficial effect
      of reducing the NOCB kthreads by at least a factor of two.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      [ paulmck: Apply rcu_read_unlock_special() preempt_count() feedback
        from Joel Fernandes. ]
      [ paulmck: Adjust rcu_eqs_enter() call to rcu_preempt_deferred_qs() in
        response to bug reports from kbuild test robot. ]
      [ paulmck: Fix bug located by kbuild test robot involving recursion
        via rcu_preempt_deferred_qs(). ]
      3e310098
    • Paul E. McKenney's avatar
      doc: Fix broken HTML directive · 5c3f78ec
      Paul E. McKenney authored
      
      This commit adds the needed "<".
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      5c3f78ec
    • Paul E. McKenney's avatar
      doc: Update removal of RCU-bh/sched update machinery · 77095901
      Paul E. McKenney authored
      
      The RCU-bh update API is now defined in terms of that of RCU-bh and
      RCU-sched, so this commit updates the documentation accordingly.
      
      In addition, although RCU-sched persists in !PREEMPT kernels, in
      the PREEMPT case its update API is now defined in terms of that of
      RCU-preempt, so this commit also updates the documentation accordingly.
      
      While in the area, this commit removes the documentation for the
      now-obsolete synchronize_rcu_mult() and clarifies the Tasks RCU
      documentation.
      
      Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
      77095901
  8. Aug 29, 2018
  9. Jul 12, 2018
Loading