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(-)