lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210106013950.GA14663@paulmck-ThinkPad-P72>
Date:   Tue, 5 Jan 2021 17:39:50 -0800
From:   "Paul E. McKenney" <paulmck@...nel.org>
To:     rcu@...r.kernel.org
Cc:     linux-kernel@...r.kernel.org, kernel-team@...com, mingo@...nel.org,
        jiangshanlai@...il.com, akpm@...ux-foundation.org,
        mathieu.desnoyers@...icios.com, josh@...htriplett.org,
        tglx@...utronix.de, peterz@...radead.org, rostedt@...dmis.org,
        dhowells@...hat.com, edumazet@...gle.com, fweisbec@...il.com,
        oleg@...hat.com, joel@...lfernandes.org
Subject: [PATCH tip/core/rcu 0/21] Provide runtime switching of offloaded CPUs

Hello!

Currently, it is necessary to reboot to change a given CPU between
invoking its own RCU callbacks via softirq and offloading callback
invocation to an rcuo kthread.  This series allows CPUs that were
initially offloaded to be toggled back and forth at runtime, without
requiring a reboot.

Note that you can boot with all CPUs offloaded, de-offload them
as needed immediately after boot, and thereafter toggled back and
forth as desired.

1.	Turn enabled/offload states into a common flag, courtesy of
	Frederic Weisbecker.

2.	Provide basic callback offloading state machine bits, courtesy
	of Frederic Weisbecker.

3.	Always init segcblist on CPU up, courtesy of Frederic Weisbecker.

4.	De-offloading CB kthread, courtesy of Frederic Weisbecker.

5.	Don't deoffload an offline CPU with pending work, courtesy of
	Frederic Weisbecker.

6.	De-offloading GP kthread, courtesy of Frederic Weisbecker.

7.	Re-offload support, courtesy of Frederic Weisbecker.

8.	Shutdown nocb timer on de-offloading, courtesy of Frederic
	Weisbecker.

9.	Flush bypass before setting SEGCBLIST_SOFTIRQ_ONLY, courtesy of
	Frederic Weisbecker.

10.	Set SEGCBLIST_SOFTIRQ_ONLY at the very last stage of
	de-offloading, courtesy of Frederic Weisbecker.

11.	Only cond_resched() from actual offloaded batch processing,
	courtesy of Frederic Weisbecker.

12.	Process batch locally as long as offloading isn't complete,
	courtesy of Frederic Weisbecker.

13.	Locally accelerate callbacks as long as offloading isn't complete,
	courtesy of Frederic Weisbecker.

14.	Add lockdep_is_cpus_held(), courtesy of Frederic Weisbecker.

15.	Add timer_curr_running(), courtesy of Frederic Weisbecker.

16.	Test runtime toggling of CPUs' callback offloading.

17.	Support nocb toggle in TREE01, courtesy of Frederic Weisbecker.

18.	Add grace period and task state to show_rcu_nocb_state() output.

19.	Add nocb CB kthread list to show_rcu_nocb_state() output.

20.	Code-style nits in callback-offloading toggling.

21.	Do any deferred nocb wakeups at CPU offline time.

						Thanx, Paul

------------------------------------------------------------------------

 Documentation/admin-guide/kernel-parameters.txt            |    8 
 include/linux/cpu.h                                        |    2 
 include/linux/rcu_segcblist.h                              |  121 +++
 include/linux/rcupdate.h                                   |    4 
 include/linux/timer.h                                      |    2 
 kernel/cpu.c                                               |    7 
 kernel/rcu/rcu_segcblist.c                                 |   17 
 kernel/rcu/rcu_segcblist.h                                 |   79 +-
 kernel/rcu/rcutorture.c                                    |   90 ++
 kernel/rcu/tree.c                                          |   31 
 kernel/rcu/tree.h                                          |    2 
 kernel/rcu/tree_plugin.h                                   |  433 +++++++++++--
 kernel/time/timer.c                                        |   13 
 tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot |    4 
 14 files changed, 714 insertions(+), 99 deletions(-)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ