lkml.org 
[lkml]   [2020]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH 00/19] rcu/nocb: De-offload and re-offload support v4
Date
This keeps growing up. Rest assured, most of it is debug code and sanity
checks.

Boqun Feng found that holding rnp lock while updating the offloaded
state of an rdp isn't needed, and he was right despite my initial
reaction. The sites that read the offloaded state while holding the rnp
lock are actually protected because they read it locally in a non
preemptible context.

So I removed the rnp lock in "rcu/nocb: De-offloading CB". And just to
make sure I'm not missing something, I added sanity checks that ensure
we always read the offloaded state in a safe way (3 last patches).

Still passes TREE01 (but I had to fight!)

git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
rcu/nocb-toggle-v4

HEAD: 579e15efa48fb6fc4ecf14961804051f385807fe

Thanks,
Frederic
---

Frederic Weisbecker (19):
rcu/nocb: Turn enabled/offload states into a common flag
rcu/nocb: Provide basic callback offloading state machine bits
rcu/nocb: Always init segcblist on CPU up
rcu/nocb: De-offloading CB kthread
rcu/nocb: Don't deoffload an offline CPU with pending work
rcu/nocb: De-offloading GP kthread
rcu/nocb: Re-offload support
rcu/nocb: Shutdown nocb timer on de-offloading
rcu: Flush bypass before setting SEGCBLIST_SOFTIRQ_ONLY
rcu/nocb: Set SEGCBLIST_SOFTIRQ_ONLY at the very last stage of de-offloading
rcu/nocb: Only cond_resched() from actual offloaded batch processing
rcu/nocb: Process batch locally as long as offloading isn't complete
rcu/nocb: Locally accelerate callbacks as long as offloading isn't complete
tools/rcutorture: Support nocb toggle in TREE01
rcutorture: Remove weak nocb declarations
rcutorture: Export nocb (de)offloading functions
cpu/hotplug: Add lockdep_is_cpus_held()
timer: Add timer_curr_running()
rcu/nocb: Detect unsafe checks for offloaded rdp


include/linux/cpu.h | 1 +
include/linux/rcu_segcblist.h | 119 +++++-
include/linux/rcupdate.h | 4 +
include/linux/timer.h | 2 +
kernel/cpu.c | 7 +
kernel/rcu/rcu_segcblist.c | 13 +-
kernel/rcu/rcu_segcblist.h | 45 ++-
kernel/rcu/rcutorture.c | 3 -
kernel/rcu/tree.c | 49 ++-
kernel/rcu/tree.h | 2 +
kernel/rcu/tree_plugin.h | 416 +++++++++++++++++++--
kernel/time/timer.c | 13 +
.../selftests/rcutorture/configs/rcu/TREE01.boot | 4 +-
13 files changed, 614 insertions(+), 64 deletions(-)

\
 
 \ /
  Last update: 2020-11-13 13:14    [W:0.164 / U:1.128 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site