linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@kernel.org>
To: Frederic Weisbecker <frederic@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Phil Auld <pauld@redhat.com>, Alex Belits <abelits@marvell.com>,
	Nicolas Saenz Julienne <nsaenz@kernel.org>,
	Xiongfeng Wang <wangxiongfeng2@huawei.com>,
	Neeraj Upadhyay <quic_neeraju@quicinc.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Yu Liao <liaoyu15@huawei.com>, Boqun Feng <boqun.feng@gmail.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Paul Gortmaker <paul.gortmaker@windriver.com>,
	Uladzislau Rezki <uladzislau.rezki@sony.com>,
	Joel Fernandes <joel@joelfernandes.org>
Subject: Re: [PATCH 05/19] context_tracking: Split user tracking Kconfig
Date: Thu, 10 Mar 2022 11:43:46 -0800	[thread overview]
Message-ID: <20220310194346.GT4285@paulmck-ThinkPad-P17-Gen-1> (raw)
In-Reply-To: <20220302154810.42308-6-frederic@kernel.org>

On Wed, Mar 02, 2022 at 04:47:56PM +0100, Frederic Weisbecker wrote:
> Context tracking is going to be used not only to track user transitions
> but also idle/IRQs/NMIs. The user tracking part will then become a
> seperate feature. Prepare Kconfig for that.

s/seperate/separate/ # nit

> Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
> Cc: Paul E. McKenney <paulmck@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Neeraj Upadhyay <quic_neeraju@quicinc.com>
> Cc: Uladzislau Rezki <uladzislau.rezki@sony.com>
> Cc: Joel Fernandes <joel@joelfernandes.org>
> Cc: Boqun Feng <boqun.feng@gmail.com>
> Cc: Nicolas Saenz Julienne <nsaenz@kernel.org>
> Cc: Marcelo Tosatti <mtosatti@redhat.com>
> Cc: Xiongfeng Wang <wangxiongfeng2@huawei.com>
> Cc: Yu Liao<liaoyu15@huawei.com>
> Cc: Phil Auld <pauld@redhat.com>
> Cc: Paul Gortmaker<paul.gortmaker@windriver.com>
> Cc: Alex Belits <abelits@marvell.com>
> ---
>  .../time/context-tracking/arch-support.txt    |  6 ++---
>  arch/Kconfig                                  |  4 ++--
>  arch/arm/Kconfig                              |  2 +-
>  arch/arm/kernel/entry-common.S                |  4 ++--
>  arch/arm/kernel/entry-header.S                |  4 ++--
>  arch/arm64/Kconfig                            |  2 +-
>  arch/csky/Kconfig                             |  2 +-
>  arch/csky/kernel/entry.S                      |  4 ++--
>  arch/mips/Kconfig                             |  2 +-
>  arch/powerpc/Kconfig                          |  2 +-
>  arch/powerpc/include/asm/context_tracking.h   |  2 +-
>  arch/riscv/Kconfig                            |  2 +-
>  arch/riscv/kernel/entry.S                     |  6 ++---
>  arch/sparc/Kconfig                            |  2 +-
>  arch/sparc/kernel/rtrap_64.S                  |  2 +-
>  arch/x86/Kconfig                              |  4 ++--
>  include/linux/context_tracking.h              | 12 +++++-----
>  include/linux/context_tracking_state.h        |  4 ++--
>  init/Kconfig                                  |  4 ++--
>  kernel/context_tracking.c                     |  6 ++++-
>  kernel/sched/core.c                           |  2 +-
>  kernel/time/Kconfig                           | 22 +++++++++++--------
>  22 files changed, 54 insertions(+), 46 deletions(-)
> 
> diff --git a/Documentation/features/time/context-tracking/arch-support.txt b/Documentation/features/time/context-tracking/arch-support.txt
> index 4ed116c2ec39..0696fd08429e 100644
> --- a/Documentation/features/time/context-tracking/arch-support.txt
> +++ b/Documentation/features/time/context-tracking/arch-support.txt
> @@ -1,7 +1,7 @@
>  #
> -# Feature name:          context-tracking
> -#         Kconfig:       HAVE_CONTEXT_TRACKING
> -#         description:   arch supports context tracking for NO_HZ_FULL
> +# Feature name:          user-context-tracking
> +#         Kconfig:       HAVE_CONTEXT_TRACKING_USER
> +#         description:   arch supports user context tracking for NO_HZ_FULL
>  #
>      -----------------------
>      |         arch |status|
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 678a80713b21..1a3b79cfc9e3 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -762,7 +762,7 @@ config HAVE_ARCH_WITHIN_STACK_FRAMES
>  	  and similar) by implementing an inline arch_within_stack_frames(),
>  	  which is used by CONFIG_HARDENED_USERCOPY.
>  
> -config HAVE_CONTEXT_TRACKING
> +config HAVE_CONTEXT_TRACKING_USER

Just checking...  This means that only some configs will see userland
execution as being different than kernel execution, correct?  (Which
is the case today, to be fair.)

							Thanx, Paul

>  	bool
>  	help
>  	  Provide kernel/user boundaries probes necessary for subsystems
> @@ -773,7 +773,7 @@ config HAVE_CONTEXT_TRACKING
>  	  protected inside rcu_irq_enter/rcu_irq_exit() but preemption or signal
>  	  handling on irq exit still need to be protected.
>  
> -config HAVE_CONTEXT_TRACKING_OFFSTACK
> +config HAVE_CONTEXT_TRACKING_USER_OFFSTACK
>  	bool
>  	help
>  	  Architecture neither relies on exception_enter()/exception_exit()
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index fabe39169b12..2c5688f20421 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -81,7 +81,7 @@ config ARM
>  	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if ARM_LPAE
>  	select HAVE_ARM_SMCCC if CPU_V7
>  	select HAVE_EBPF_JIT if !CPU_ENDIAN_BE32
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_C_RECORDMCOUNT
>  	select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL
>  	select HAVE_DMA_CONTIGUOUS if MMU
> diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
> index ac86c34682bb..5be34b7fe41e 100644
> --- a/arch/arm/kernel/entry-common.S
> +++ b/arch/arm/kernel/entry-common.S
> @@ -26,7 +26,7 @@
>  #include "entry-header.S"
>  
>  saved_psr	.req	r8
> -#if defined(CONFIG_TRACE_IRQFLAGS) || defined(CONFIG_CONTEXT_TRACKING)
> +#if defined(CONFIG_TRACE_IRQFLAGS) || defined(CONFIG_CONTEXT_TRACKING_USER)
>  saved_pc	.req	r9
>  #define TRACE(x...) x
>  #else
> @@ -36,7 +36,7 @@ saved_pc	.req	lr
>  
>  	.section .entry.text,"ax",%progbits
>  	.align	5
> -#if !(IS_ENABLED(CONFIG_TRACE_IRQFLAGS) || IS_ENABLED(CONFIG_CONTEXT_TRACKING) || \
> +#if !(IS_ENABLED(CONFIG_TRACE_IRQFLAGS) || IS_ENABLED(CONFIG_CONTEXT_TRACKING_USER) || \
>  	IS_ENABLED(CONFIG_DEBUG_RSEQ))
>  /*
>   * This is the fast syscall return path.  We do as little as possible here,
> diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
> index 3af2a521e1d6..cd1ce0a9c652 100644
> --- a/arch/arm/kernel/entry-header.S
> +++ b/arch/arm/kernel/entry-header.S
> @@ -361,7 +361,7 @@
>   * between user and kernel mode.
>   */
>  	.macro ct_user_exit, save = 1
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	.if	\save
>  	stmdb   sp!, {r0-r3, ip, lr}
>  	bl	user_exit_callable
> @@ -373,7 +373,7 @@
>  	.endm
>  
>  	.macro ct_user_enter, save = 1
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	.if	\save
>  	stmdb   sp!, {r0-r3, ip, lr}
>  	bl	user_enter_callable
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 6978140edfa4..96e75d7fa0a3 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -169,7 +169,7 @@ config ARM64
>  	select HAVE_C_RECORDMCOUNT
>  	select HAVE_CMPXCHG_DOUBLE
>  	select HAVE_CMPXCHG_LOCAL
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_DEBUG_KMEMLEAK
>  	select HAVE_DMA_CONTIGUOUS
>  	select HAVE_DYNAMIC_FTRACE
> diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
> index 132f43f12dd8..c94cc907b828 100644
> --- a/arch/csky/Kconfig
> +++ b/arch/csky/Kconfig
> @@ -42,7 +42,7 @@ config CSKY
>  	select HAVE_ARCH_AUDITSYSCALL
>  	select HAVE_ARCH_MMAP_RND_BITS
>  	select HAVE_ARCH_SECCOMP_FILTER
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_VIRT_CPU_ACCOUNTING_GEN
>  	select HAVE_DEBUG_BUGVERBOSE
>  	select HAVE_DEBUG_KMEMLEAK
> diff --git a/arch/csky/kernel/entry.S b/arch/csky/kernel/entry.S
> index bc734d17c16f..547b4cd1b24b 100644
> --- a/arch/csky/kernel/entry.S
> +++ b/arch/csky/kernel/entry.S
> @@ -19,7 +19,7 @@
>  .endm
>  
>  .macro	context_tracking
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	mfcr	a0, epsr
>  	btsti	a0, 31
>  	bt	1f
> @@ -159,7 +159,7 @@ ret_from_exception:
>  	and	r10, r9
>  	cmpnei	r10, 0
>  	bt	exit_work
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	jbsr	user_enter_callable
>  #endif
>  1:
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
> index 058446f01487..efcab39667ea 100644
> --- a/arch/mips/Kconfig
> +++ b/arch/mips/Kconfig
> @@ -55,7 +55,7 @@ config MIPS
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES
>  	select HAVE_ASM_MODVERSIONS
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_TIF_NOHZ
>  	select HAVE_C_RECORDMCOUNT
>  	select HAVE_DEBUG_KMEMLEAK
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index b779603978e1..9a889f919fed 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -192,7 +192,7 @@ config PPC
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_ASM_MODVERSIONS
> -	select HAVE_CONTEXT_TRACKING		if PPC64
> +	select HAVE_CONTEXT_TRACKING_USER		if PPC64
>  	select HAVE_C_RECORDMCOUNT
>  	select HAVE_DEBUG_KMEMLEAK
>  	select HAVE_DEBUG_STACKOVERFLOW
> diff --git a/arch/powerpc/include/asm/context_tracking.h b/arch/powerpc/include/asm/context_tracking.h
> index f2682b28b050..4b63931c49e0 100644
> --- a/arch/powerpc/include/asm/context_tracking.h
> +++ b/arch/powerpc/include/asm/context_tracking.h
> @@ -2,7 +2,7 @@
>  #ifndef _ASM_POWERPC_CONTEXT_TRACKING_H
>  #define _ASM_POWERPC_CONTEXT_TRACKING_H
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  #define SCHEDULE_USER bl	schedule_user
>  #else
>  #define SCHEDULE_USER bl	schedule
> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
> index 5adcbd9b5e88..36953ec26294 100644
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -80,7 +80,7 @@ config RISCV
>  	select HAVE_ARCH_THREAD_STRUCT_WHITELIST
>  	select HAVE_ARCH_VMAP_STACK if MMU && 64BIT
>  	select HAVE_ASM_MODVERSIONS
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_DEBUG_KMEMLEAK
>  	select HAVE_DMA_CONTIGUOUS if MMU
>  	select HAVE_EBPF_JIT if MMU
> diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
> index 5fbaa7be18a2..a773526fb3cc 100644
> --- a/arch/riscv/kernel/entry.S
> +++ b/arch/riscv/kernel/entry.S
> @@ -111,7 +111,7 @@ _save_context:
>  	call trace_hardirqs_off
>  #endif
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	/* If previous state is in user mode, call user_exit_callable(). */
>  	li   a0, SR_PP
>  	and a0, s1, a0
> @@ -176,7 +176,7 @@ handle_syscall:
>  	 */
>  	csrs CSR_STATUS, SR_IE
>  #endif
> -#if defined(CONFIG_TRACE_IRQFLAGS) || defined(CONFIG_CONTEXT_TRACKING)
> +#if defined(CONFIG_TRACE_IRQFLAGS) || defined(CONFIG_CONTEXT_TRACKING_USER)
>  	/* Recover a0 - a7 for system calls */
>  	REG_L a0, PT_A0(sp)
>  	REG_L a1, PT_A1(sp)
> @@ -251,7 +251,7 @@ resume_userspace:
>  	andi s1, s0, _TIF_WORK_MASK
>  	bnez s1, work_pending
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  	call user_enter_callable
>  #endif
>  
> diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
> index 1cab1b284f1a..e736120f4333 100644
> --- a/arch/sparc/Kconfig
> +++ b/arch/sparc/Kconfig
> @@ -71,7 +71,7 @@ config SPARC64
>  	select HAVE_DYNAMIC_FTRACE
>  	select HAVE_FTRACE_MCOUNT_RECORD
>  	select HAVE_SYSCALL_TRACEPOINTS
> -	select HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_TIF_NOHZ
>  	select HAVE_DEBUG_KMEMLEAK
>  	select IOMMU_HELPER
> diff --git a/arch/sparc/kernel/rtrap_64.S b/arch/sparc/kernel/rtrap_64.S
> index c5fd4b450d9b..eef102765a7e 100644
> --- a/arch/sparc/kernel/rtrap_64.S
> +++ b/arch/sparc/kernel/rtrap_64.S
> @@ -15,7 +15,7 @@
>  #include <asm/visasm.h>
>  #include <asm/processor.h>
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  # define SCHEDULE_USER schedule_user
>  #else
>  # define SCHEDULE_USER schedule
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index ebe8fc76949a..fbda20f6cf08 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -182,8 +182,8 @@ config X86
>  	select HAVE_ASM_MODVERSIONS
>  	select HAVE_CMPXCHG_DOUBLE
>  	select HAVE_CMPXCHG_LOCAL
> -	select HAVE_CONTEXT_TRACKING		if X86_64
> -	select HAVE_CONTEXT_TRACKING_OFFSTACK	if HAVE_CONTEXT_TRACKING
> +	select HAVE_CONTEXT_TRACKING_USER		if X86_64
> +	select HAVE_CONTEXT_TRACKING_USER_OFFSTACK	if HAVE_CONTEXT_TRACKING_USER
>  	select HAVE_C_RECORDMCOUNT
>  	select HAVE_OBJTOOL_MCOUNT		if STACK_VALIDATION
>  	select HAVE_DEBUG_KMEMLEAK
> diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
> index 40badd62ad56..75738f20e111 100644
> --- a/include/linux/context_tracking.h
> +++ b/include/linux/context_tracking.h
> @@ -10,7 +10,7 @@
>  #include <asm/ptrace.h>
>  
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  extern void context_tracking_cpu_track_user(int cpu);
>  
>  /* Called with interrupts disabled.  */
> @@ -52,7 +52,7 @@ static inline enum ctx_state exception_enter(void)
>  {
>  	enum ctx_state prev_ctx;
>  
> -	if (IS_ENABLED(CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK) ||
> +	if (IS_ENABLED(CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK) ||
>  	    !context_tracking_enabled())
>  		return 0;
>  
> @@ -65,7 +65,7 @@ static inline enum ctx_state exception_enter(void)
>  
>  static inline void exception_exit(enum ctx_state prev_ctx)
>  {
> -	if (!IS_ENABLED(CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK) &&
> +	if (!IS_ENABLED(CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK) &&
>  	    context_tracking_enabled()) {
>  		if (prev_ctx != CONTEXT_KERNEL)
>  			ct_user_enter(prev_ctx);
> @@ -109,14 +109,14 @@ static inline enum ctx_state ct_state(void) { return CONTEXT_DISABLED; }
>  static __always_inline bool context_tracking_guest_enter(void) { return false; }
>  static inline void context_tracking_guest_exit(void) { }
>  
> -#endif /* !CONFIG_CONTEXT_TRACKING */
> +#endif /* !CONFIG_CONTEXT_TRACKING_USER */
>  
>  #define CT_WARN_ON(cond) WARN_ON(context_tracking_enabled() && (cond))
>  
> -#ifdef CONFIG_CONTEXT_TRACKING_FORCE
> +#ifdef CONFIG_CONTEXT_TRACKING_USER_FORCE
>  extern void context_tracking_init(void);
>  #else
>  static inline void context_tracking_init(void) { }
> -#endif /* CONFIG_CONTEXT_TRACKING_FORCE */
> +#endif /* CONFIG_CONTEXT_TRACKING_USER_FORCE */
>  
>  #endif
> diff --git a/include/linux/context_tracking_state.h b/include/linux/context_tracking_state.h
> index 65a60d3313b0..64dbbb880378 100644
> --- a/include/linux/context_tracking_state.h
> +++ b/include/linux/context_tracking_state.h
> @@ -22,7 +22,7 @@ struct context_tracking {
>  	} state;
>  };
>  
> -#ifdef CONFIG_CONTEXT_TRACKING
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
>  extern struct static_key_false context_tracking_key;
>  DECLARE_PER_CPU(struct context_tracking, context_tracking);
>  
> @@ -50,6 +50,6 @@ static inline bool context_tracking_in_user(void) { return false; }
>  static inline bool context_tracking_enabled(void) { return false; }
>  static inline bool context_tracking_enabled_cpu(int cpu) { return false; }
>  static inline bool context_tracking_enabled_this_cpu(void) { return false; }
> -#endif /* CONFIG_CONTEXT_TRACKING */
> +#endif /* CONFIG_CONTEXT_TRACKING_USER */
>  
>  #endif
> diff --git a/init/Kconfig b/init/Kconfig
> index e9119bf54b1f..22525443de90 100644
> --- a/init/Kconfig
> +++ b/init/Kconfig
> @@ -498,11 +498,11 @@ config VIRT_CPU_ACCOUNTING_NATIVE
>  
>  config VIRT_CPU_ACCOUNTING_GEN
>  	bool "Full dynticks CPU time accounting"
> -	depends on HAVE_CONTEXT_TRACKING
> +	depends on HAVE_CONTEXT_TRACKING_USER
>  	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
>  	depends on GENERIC_CLOCKEVENTS
>  	select VIRT_CPU_ACCOUNTING
> -	select CONTEXT_TRACKING
> +	select CONTEXT_TRACKING_USER
>  	help
>  	  Select this option to enable task and CPU time accounting on full
>  	  dynticks systems. This accounting is implemented by watching every
> diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c
> index 7b6643d2075d..42054841af3f 100644
> --- a/kernel/context_tracking.c
> +++ b/kernel/context_tracking.c
> @@ -22,6 +22,8 @@
>  #include <linux/export.h>
>  #include <linux/kprobes.h>
>  
> +#ifdef CONFIG_CONTEXT_TRACKING_USER
> +
>  #define CREATE_TRACE_POINTS
>  #include <trace/events/context_tracking.h>
>  
> @@ -222,7 +224,7 @@ void __init context_tracking_cpu_track_user(int cpu)
>  	initialized = true;
>  }
>  
> -#ifdef CONFIG_CONTEXT_TRACKING_FORCE
> +#ifdef CONFIG_CONTEXT_TRACKING_USER_FORCE
>  void __init context_tracking_init(void)
>  {
>  	int cpu;
> @@ -231,3 +233,5 @@ void __init context_tracking_init(void)
>  		context_tracking_cpu_track_user(cpu);
>  }
>  #endif
> +
> +#endif /* #ifdef CONFIG_CONTEXT_TRACKING_USER */
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index 2e4ae00e52d1..e79485afb58c 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -6398,7 +6398,7 @@ void __sched schedule_idle(void)
>  	} while (need_resched());
>  }
>  
> -#if defined(CONFIG_CONTEXT_TRACKING) && !defined(CONFIG_HAVE_CONTEXT_TRACKING_OFFSTACK)
> +#if defined(CONFIG_CONTEXT_TRACKING_USER) && !defined(CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK)
>  asmlinkage __visible void __sched schedule_user(void)
>  {
>  	/*
> diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
> index 27b7868b5c30..aad89cc96787 100644
> --- a/kernel/time/Kconfig
> +++ b/kernel/time/Kconfig
> @@ -111,7 +111,7 @@ config NO_HZ_FULL
>  	# NO_HZ_COMMON dependency
>  	# We need at least one periodic CPU for timekeeping
>  	depends on SMP
> -	depends on HAVE_CONTEXT_TRACKING
> +	depends on HAVE_CONTEXT_TRACKING_USER
>  	# VIRT_CPU_ACCOUNTING_GEN dependency
>  	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
>  	select NO_HZ_COMMON
> @@ -140,28 +140,32 @@ endchoice
>  config CONTEXT_TRACKING
>         bool
>  
> -config CONTEXT_TRACKING_FORCE
> -	bool "Force context tracking"
> -	depends on CONTEXT_TRACKING
> +config CONTEXT_TRACKING_USER
> +       select CONTEXT_TRACKING
> +       bool
> +
> +config CONTEXT_TRACKING_USER_FORCE
> +	bool "Force user context tracking"
> +	depends on CONTEXT_TRACKING_USER
>  	default y if !NO_HZ_FULL
>  	help
>  	  The major pre-requirement for full dynticks to work is to
> -	  support the context tracking subsystem. But there are also
> +	  support the user context tracking subsystem. But there are also
>  	  other dependencies to provide in order to make the full
>  	  dynticks working.
>  
>  	  This option stands for testing when an arch implements the
> -	  context tracking backend but doesn't yet fulfill all the
> +	  user context tracking backend but doesn't yet fulfill all the
>  	  requirements to make the full dynticks feature working.
>  	  Without the full dynticks, there is no way to test the support
> -	  for context tracking and the subsystems that rely on it: RCU
> +	  for user context tracking and the subsystems that rely on it: RCU
>  	  userspace extended quiescent state and tickless cputime
>  	  accounting. This option copes with the absence of the full
> -	  dynticks subsystem by forcing the context tracking on all
> +	  dynticks subsystem by forcing the user context tracking on all
>  	  CPUs in the system.
>  
>  	  Say Y only if you're working on the development of an
> -	  architecture backend for the context tracking.
> +	  architecture backend for the user context tracking.
>  
>  	  Say N otherwise, this option brings an overhead that you
>  	  don't want in production.
> -- 
> 2.25.1
> 

  reply	other threads:[~2022-03-10 19:43 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-02 15:47 [PATCH 00/19] rcu/context-tracking: Merge RCU eqs-dynticks counter to context tracking Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 01/19] context_tracking: Rename __context_tracking_enter/exit() to __ct_user_enter/exit() Frederic Weisbecker
2022-03-10 19:27   ` Paul E. McKenney
2022-03-02 15:47 ` [PATCH 02/19] context_tracking: Rename context_tracking_user_enter/exit() to user_enter/exit_callable() Frederic Weisbecker
2022-03-05 13:59   ` Peter Zijlstra
2022-03-09 20:53     ` Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 03/19] context_tracking: Rename context_tracking_enter/exit() to ct_user_enter/exit() Frederic Weisbecker
2022-03-05 14:02   ` Peter Zijlstra
2022-03-09 21:21     ` Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 04/19] context_tracking: Rename context_tracking_cpu_set() to context_tracking_cpu_track_user() Frederic Weisbecker
2022-03-05 14:03   ` Peter Zijlstra
2022-03-09 21:11     ` Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 05/19] context_tracking: Split user tracking Kconfig Frederic Weisbecker
2022-03-10 19:43   ` Paul E. McKenney [this message]
2022-03-11 15:49     ` Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 06/19] context_tracking: Take idle eqs entrypoints over RCU Frederic Weisbecker
2022-03-05 14:05   ` Peter Zijlstra
2022-03-09 21:12     ` Frederic Weisbecker
2022-03-02 15:47 ` [PATCH 07/19] context_tracking: Take IRQ " Frederic Weisbecker
2022-03-10 19:46   ` Paul E. McKenney
2022-03-02 15:47 ` [PATCH 08/19] context_tracking: Take NMI " Frederic Weisbecker
2022-03-10 19:47   ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 09/19] rcu/context-tracking: Remove rcu_irq_enter/exit() Frederic Weisbecker
2022-03-05 14:16   ` Peter Zijlstra
2022-03-09 22:25     ` Frederic Weisbecker
2022-03-02 15:48 ` [PATCH 10/19] rcu/context_tracking: Move dynticks counter to context tracking Frederic Weisbecker
2022-03-10 20:00   ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 11/19] rcu/context_tracking: Move dynticks_nesting " Frederic Weisbecker
2022-03-10 20:01   ` Paul E. McKenney
2022-03-12 23:23   ` Peter Zijlstra
2022-03-02 15:48 ` [PATCH 12/19] rcu/context_tracking: Move dynticks_nmi_nesting " Frederic Weisbecker
2022-03-10 20:02   ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 13/19] rcu/context-tracking: Move deferred nocb resched " Frederic Weisbecker
2022-03-10 20:04   ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 14/19] rcu/context-tracking: Move RCU-dynticks internal functions to context_tracking Frederic Weisbecker
2022-03-10 20:07   ` Paul E. McKenney
2022-03-11 16:02     ` Frederic Weisbecker
2022-03-11 16:14       ` Paul E. McKenney
2022-03-12 23:10   ` Peter Zijlstra
2022-03-02 15:48 ` [PATCH 15/19] rcu/context-tracking: Remove unused and/or unecessary middle functions Frederic Weisbecker
2022-03-09 16:40   ` nicolas saenz julienne
2022-03-11 15:19     ` Frederic Weisbecker
2022-03-02 15:48 ` [PATCH 16/19] context_tracking: Convert state to atomic_t Frederic Weisbecker
2022-03-09 17:17   ` nicolas saenz julienne
2022-03-11 15:24     ` Frederic Weisbecker
2022-03-12 22:54   ` Peter Zijlstra
2022-03-21 13:32     ` Will Deacon
2022-03-02 15:48 ` [PATCH 17/19] rcu/context-tracking: Use accessor for dynticks counter value Frederic Weisbecker
2022-03-10 20:08   ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 18/19] rcu/context_tracking: Merge dynticks counter and context tracking states Frederic Weisbecker
2022-03-10 20:32   ` Paul E. McKenney
2022-03-11 16:35     ` Frederic Weisbecker
2022-03-11 17:28       ` Paul E. McKenney
2022-03-02 15:48 ` [PATCH 19/19] context_tracking: Exempt CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK from non-active tracking Frederic Weisbecker
2022-03-08 16:15   ` nicolas saenz julienne
2022-03-11 15:16     ` Frederic Weisbecker
2022-03-11 11:37 ` [PATCH 00/19] rcu/context-tracking: Merge RCU eqs-dynticks counter to context tracking nicolas saenz julienne

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220310194346.GT4285@paulmck-ThinkPad-P17-Gen-1 \
    --to=paulmck@kernel.org \
    --cc=abelits@marvell.com \
    --cc=boqun.feng@gmail.com \
    --cc=frederic@kernel.org \
    --cc=joel@joelfernandes.org \
    --cc=liaoyu15@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=nsaenz@kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=pauld@redhat.com \
    --cc=peterz@infradead.org \
    --cc=quic_neeraju@quicinc.com \
    --cc=tglx@linutronix.de \
    --cc=uladzislau.rezki@sony.com \
    --cc=wangxiongfeng2@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).