13 Jul, 2018

5 commits


16 May, 2018

1 commit

  • It came to my attention that the file "whatisRCU.txt" does not
    manage to actually ever spell out what is RCU.

    This might not be an issue for a lot of people, but we have to
    assume the consumers of these documents are starting from ground
    zero; otherwise they'd not be reading the docs.

    Signed-off-by: Paul Gortmaker
    Signed-off-by: Paul E. McKenney
    Tested-by: Nicholas Piggin

    Paul Gortmaker
     

12 Dec, 2017

1 commit


06 Dec, 2017

1 commit


05 Dec, 2017

1 commit


29 Nov, 2017

1 commit


14 Nov, 2017

1 commit

  • Pull RCU updates from Ingo Molnar:
    "The main changes in this cycle are:

    - Documentation updates

    - RCU CPU stall-warning updates

    - Torture-test updates

    - Miscellaneous fixes

    Size wise the biggest updates are to documentation. Excluding
    documentation most of the code increase comes from a single commit
    which expands debugging"

    * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (24 commits)
    srcu: Add parameters to SRCU docbook comments
    doc: Rewrite confusing statement about memory barriers
    memory-barriers.txt: Fix typo in pairing example
    rcu/segcblist: Include rcupdate.h
    rcu: Add extended-quiescent-state testing advice
    rcu: Suppress lockdep false-positive ->boost_mtx complaints
    rcu: Do not include rtmutex_common.h unconditionally
    torture: Provide TMPDIR environment variable to specify tmpdir
    rcutorture: Dump writer stack if stalled
    rcutorture: Add interrupt-disable capability to stall-warning tests
    rcu: Suppress RCU CPU stall warnings while dumping trace
    rcu: Turn off tracing before dumping trace
    rcu: Make RCU CPU stall warnings check for irq-disabled CPUs
    sched,rcu: Make cond_resched() provide RCU quiescent state
    sched: Make resched_cpu() unconditional
    irq_work: Map irq_work_on_queue() to irq_work_on() in !SMP
    rcu: Create call_rcu_tasks() kthread at boot time
    rcu: Fix up pending cbs check in rcu_prepare_for_idle
    memory-barriers: Rework multicopy-atomicity section
    memory-barriers: Replace uses of "transitive"
    ...

    Linus Torvalds
     

20 Oct, 2017

1 commit


10 Oct, 2017

4 commits


17 Aug, 2017

3 commits


09 Jun, 2017

3 commits

  • RCU's debugfs tracing used to be the only reasonable low-level debug
    information available, but ftrace and event tracing has since surpassed
    the RCU debugfs level of usefulness. This commit therefore removes
    RCU's debugfs tracing.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The sparse-based checking for non-RCU accesses to RCU-protected pointers
    has been around for a very long time, and it is now the only type of
    sparse-based checking that is optional. This commit therefore makes
    it unconditional.

    Reported-by: Ingo Molnar
    Signed-off-by: Paul E. McKenney
    Cc: Fengguang Wu

    Paul E. McKenney
     
  • The NO_HZ_FULL_SYSIDLE full-system-idle capability was added in 2013
    by commit 0edd1b1784cb ("nohz_full: Add full-system-idle state machine"),
    but has not been used. This commit therefore removes it.

    If it turns out to be needed later, this commit can always be reverted.

    Signed-off-by: Paul E. McKenney
    Cc: Frederic Weisbecker
    Cc: Rik van Riel
    Cc: Ingo Molnar
    Acked-by: Linus Torvalds

    Paul E. McKenney
     

08 Jun, 2017

2 commits


21 Apr, 2017

1 commit


19 Apr, 2017

5 commits

  • A group of Linux kernel hackers reported chasing a bug that resulted
    from their assumption that SLAB_DESTROY_BY_RCU provided an existence
    guarantee, that is, that no block from such a slab would be reallocated
    during an RCU read-side critical section. Of course, that is not the
    case. Instead, SLAB_DESTROY_BY_RCU only prevents freeing of an entire
    slab of blocks.

    However, there is a phrase for this, namely "type safety". This commit
    therefore renames SLAB_DESTROY_BY_RCU to SLAB_TYPESAFE_BY_RCU in order
    to avoid future instances of this sort of confusion.

    Signed-off-by: Paul E. McKenney
    Cc: Christoph Lameter
    Cc: Pekka Enberg
    Cc: David Rientjes
    Cc: Joonsoo Kim
    Cc: Andrew Morton
    Cc:
    Acked-by: Johannes Weiner
    Acked-by: Vlastimil Babka
    [ paulmck: Add comments mentioning the old name, as requested by Eric
    Dumazet, in order to help people familiar with the old name find
    the new one. ]
    Acked-by: David Rientjes

    Paul E. McKenney
     
  • The rcu_all_qs() and rcu_note_context_switch() do a series of checks,
    taking various actions to supply RCU with quiescent states, depending
    on the outcomes of the various checks. This is a bit much for scheduling
    fastpaths, so this commit creates a separate ->rcu_urgent_qs field in
    the rcu_dynticks structure that acts as a global guard for these checks.
    Thus, in the common case, rcu_all_qs() and rcu_note_context_switch()
    check the ->rcu_urgent_qs field, find it false, and simply return.

    Signed-off-by: Paul E. McKenney
    Cc: Peter Zijlstra

    Paul E. McKenney
     
  • The rcu_momentary_dyntick_idle() function scans the RCU flavors, checking
    that one of them still needs a quiescent state before doing an expensive
    atomic operation on the ->dynticks counter. However, this check reduces
    overhead only after a rare race condition, and increases complexity. This
    commit therefore removes the scan and the mechanism enabling the scan.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The rcu_qs_ctr variable is yet another isolated per-CPU variable,
    so this commit pulls it into the pre-existing rcu_dynticks per-CPU
    structure.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     
  • The rcu_sched_qs_mask variable is yet another isolated per-CPU variable,
    so this commit pulls it into the pre-existing rcu_dynticks per-CPU
    structure.

    Signed-off-by: Paul E. McKenney

    Paul E. McKenney
     

12 Apr, 2017

8 commits


26 Jan, 2017

1 commit


24 Jan, 2017

1 commit

  • Expedited grace periods no longer fall back to normal grace periods
    in response to lock contention, given that expedited grace periods
    now use the rcu_node tree so as to avoid contention. This commit
    therfore removes the expedited_normal counter.

    Signed-off-by: Paul E. McKenney
    Reviewed-by: Josh Triplett

    Paul E. McKenney