mbox series

[0/23] RCU/context-tracking updates for v5.20

Message ID 20220620231027.GA3844372@paulmck-ThinkPad-P17-Gen-1 (mailing list archive)
Headers show
Series RCU/context-tracking updates for v5.20 | expand

Message

Paul E. McKenney June 20, 2022, 11:10 p.m. UTC
Hello!

This series merges RCU's dyntick-idle tracking into context tracking,
thus reducing the overhead of transitioning to kernel mode from either
idle or nohz_full userspace execution for kernels that track context
independently of RCU.  (Primarily for NO_HZ_FULL kernels.)

1.	Dump rcuc kthread status for CPUs not reporting quiescent state,
	courtesy of Zqiang.

2.	Apply noinstr to rcu_idle_enter() and rcu_idle_exit().

3.	context_tracking: Remove unused context_tracking_in_user(),
	courtesy of Frederic Weisbecker.

4.	context_tracking: Add a note about noinstr VS unsafe context
	tracking functions, courtesy of Frederic Weisbecker.

5.	context_tracking: Rename __context_tracking_enter/exit() to
	__ct_user_enter/exit(), courtesy of Frederic Weisbecker.

6.	context_tracking: Rename context_tracking_user_enter/exit()
	to user_enter/exit_callable(), courtesy of Frederic Weisbecker.

7.	context_tracking: Rename context_tracking_enter/exit() to
	ct_user_enter/exit(), courtesy of Frederic Weisbecker.

8.	context_tracking: Rename context_tracking_cpu_set() to
	ct_cpu_track_user(), courtesy of Frederic Weisbecker.

9.	context_tracking: Split user tracking Kconfig, courtesy of
	Frederic Weisbecker.

10.	context_tracking: Take idle eqs entrypoints over RCU, courtesy
	of Frederic Weisbecker.

11.	context_tracking: Take IRQ eqs entrypoints over RCU, courtesy
	of Frederic Weisbecker.

12.	context_tracking: Take NMI eqs entrypoints over RCU, courtesy
	of Frederic Weisbecker.

13.	rcu/context-tracking: Remove rcu_irq_enter/exit(), courtesy of
	Frederic Weisbecker.

14.	rcu/context_tracking: Move dynticks counter to context tracking,
	courtesy of Frederic Weisbecker.

15.	rcu/context_tracking: Move dynticks_nesting to context tracking,
	courtesy of Frederic Weisbecker.

16.	rcu/context_tracking: Move dynticks_nmi_nesting to context
	tracking, courtesy of Frederic Weisbecker.

17.	rcu/context-tracking: Move deferred nocb resched to context
	tracking, courtesy of Frederic Weisbecker.

18.	rcu/context-tracking: Move RCU-dynticks internal functions to
	context_tracking, courtesy of Frederic Weisbecker.

19.	rcu/context-tracking: Remove unused and/or unecessary middle
	functions, courtesy of Frederic Weisbecker.

20.	context_tracking: Convert state to atomic_t, courtesy of Frederic
	Weisbecker.

21.	rcu/context_tracking: Merge dynticks counter and context tracking
	states, courtesy of Frederic Weisbecker.

22.	MAINTAINERS: Add Paul as context tracking maintainer, courtesy
	of Frederic Weisbecker.

23.	context_tracking: Interrupts always disabled for ct_idle_exit(),
	courtesy of Peter Zijlstra.

						Thanx, Paul

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

 Documentation/RCU/Design/Requirements/Requirements.rst          |    2 
 Documentation/RCU/stallwarn.rst                                 |    6 
 arch/Kconfig                                                    |    4 
 arch/arm/kernel/entry-header.S                                  |    4 
 arch/arm64/kernel/entry-common.c                                |    8 
 arch/csky/kernel/entry.S                                        |    4 
 arch/riscv/kernel/entry.S                                       |    6 
 b/Documentation/RCU/Design/Requirements/Requirements.rst        |   10 
 b/Documentation/RCU/stallwarn.rst                               |    4 
 b/Documentation/features/time/context-tracking/arch-support.txt |    6 
 b/MAINTAINERS                                                   |    1 
 b/arch/Kconfig                                                  |    4 
 b/arch/arm/Kconfig                                              |    2 
 b/arch/arm/kernel/entry-common.S                                |    4 
 b/arch/arm/kernel/entry-header.S                                |    8 
 b/arch/arm/mach-imx/cpuidle-imx6q.c                             |    5 
 b/arch/arm64/Kconfig                                            |    2 
 b/arch/arm64/kernel/entry-common.c                              |    6 
 b/arch/csky/Kconfig                                             |    2 
 b/arch/csky/kernel/entry.S                                      |    4 
 b/arch/mips/Kconfig                                             |    2 
 b/arch/powerpc/Kconfig                                          |    2 
 b/arch/powerpc/include/asm/context_tracking.h                   |    2 
 b/arch/riscv/Kconfig                                            |    2 
 b/arch/riscv/kernel/entry.S                                     |    6 
 b/arch/sparc/Kconfig                                            |    2 
 b/arch/sparc/kernel/rtrap_64.S                                  |    2 
 b/arch/x86/Kconfig                                              |    4 
 b/arch/x86/mm/fault.c                                           |    2 
 b/drivers/acpi/processor_idle.c                                 |    5 
 b/drivers/cpuidle/cpuidle-psci.c                                |    8 
 b/drivers/cpuidle/cpuidle-riscv-sbi.c                           |    8 
 b/drivers/cpuidle/cpuidle.c                                     |    9 
 b/include/linux/context_tracking.h                              |   12 
 b/include/linux/context_tracking_irq.h                          |   17 
 b/include/linux/context_tracking_state.h                        |    5 
 b/include/linux/entry-common.h                                  |   10 
 b/include/linux/hardirq.h                                       |    4 
 b/include/linux/rcupdate.h                                      |    2 
 b/include/linux/rcutiny.h                                       |    4 
 b/include/linux/rcutree.h                                       |    4 
 b/include/linux/tracepoint.h                                    |    4 
 b/init/Kconfig                                                  |    4 
 b/kernel/cfi.c                                                  |    4 
 b/kernel/context_tracking.c                                     |   34 
 b/kernel/cpu_pm.c                                               |    8 
 b/kernel/entry/common.c                                         |   12 
 b/kernel/extable.c                                              |    4 
 b/kernel/locking/lockdep.c                                      |    2 
 b/kernel/rcu/Kconfig                                            |    2 
 b/kernel/rcu/rcu.h                                              |    4 
 b/kernel/rcu/tree.c                                             |   14 
 b/kernel/rcu/tree.h                                             |    1 
 b/kernel/rcu/tree_exp.h                                         |    2 
 b/kernel/rcu/tree_plugin.h                                      |   38 
 b/kernel/rcu/tree_stall.h                                       |   49 
 b/kernel/rcu/update.c                                           |    2 
 b/kernel/sched/core.c                                           |    2 
 b/kernel/sched/idle.c                                           |   10 
 b/kernel/sched/sched.h                                          |    1 
 b/kernel/softirq.c                                              |    4 
 b/kernel/time/Kconfig                                           |   31 
 b/kernel/time/tick-sched.c                                      |    2 
 b/kernel/trace/trace.c                                          |    6 
 include/linux/context_tracking.h                                |   91 -
 include/linux/context_tracking_irq.h                            |    4 
 include/linux/context_tracking_state.h                          |  144 +
 include/linux/hardirq.h                                         |    8 
 include/linux/rcupdate.h                                        |   19 
 include/linux/rcutiny.h                                         |    2 
 include/linux/rcutree.h                                         |    5 
 kernel/context_tracking.c                                       |  808 +++++++---
 kernel/entry/common.c                                           |    4 
 kernel/rcu/tree.c                                               |  572 -------
 kernel/rcu/tree.h                                               |    7 
 kernel/rcu/tree_stall.h                                         |   12 
 kernel/time/Kconfig                                             |    6 
 kernel/trace/trace.c                                            |    2 
 78 files changed, 1142 insertions(+), 986 deletions(-)