[lkml]   [2009]   [Sep]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCH tip/core/rcu 0/3] rcu: simplify rcu_barrier() interaction with CPU hotplug
    This patchset simplifies the interaction of rcu_barrier() with CPU
    hotplug operations. The main point of this patchset is to impose an
    invariant: offline CPUs never have any RCU callbacks queued. However,
    rcutiny doesn't permit CPU hotplug (yes, I have worked in environments
    where the last CPU could be offlined, but Linux is thankfully not one of
    them), so the patchset goes as follows:

    o Replace the rcu_barrier enum with a pointer to the relevant
    call_rcu() function, thus eliminating any confusion about
    which .h file this enum should reside in.

    o Move the rcu_barrier() code to rcutree, and create a lightweight
    variant of rcu_barrier() that is suitable for rcutiny. This
    lightweight variant is identical to rcutree's implementation of
    synchronize_rcu() and friends.

    o Create a list in the rcu_state structure that holds RCU
    callbacks that were "orphaned" by CPUs that just went offline.
    The CPU_DYING notifier moves all RCU callbacks from the outgoing
    CPU to the rcu_state lists, and the CPU_DEAD notifier and
    _rcu_barrier() function "adopt" these orphans.

    b/kernel/rcupdate.c | 33 +++-------
    b/kernel/rcutiny.c | 36 ++++++++++
    b/kernel/rcutree.c | 120 ++++++++++++++++++++++++++++++++++++
    b/kernel/rcutree.h | 11 +++
    b/kernel/rcutree_plugin.h | 34 ++++++++++
    b/kernel/rcutree_trace.c | 5 -
    kernel/rcupdate.c | 120 ------------------------------------
    kernel/rcutree.c | 151 ++++++++++++++++++++++++----------------------
    8 files changed, 291 insertions(+), 219 deletions(-)

     \ /
      Last update: 2009-09-29 06:53    [W:0.019 / U:385.260 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site