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-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220310194346.GT4285@paulmck-ThinkPad-P17-Gen-1>
Date:   Thu, 10 Mar 2022 11:43:46 -0800
From:   "Paul E. McKenney" <paulmck@...nel.org>
To:     Frederic Weisbecker <frederic@...nel.org>
Cc:     LKML <linux-kernel@...r.kernel.org>,
        Peter Zijlstra <peterz@...radead.org>,
        Phil Auld <pauld@...hat.com>,
        Alex Belits <abelits@...vell.com>,
        Nicolas Saenz Julienne <nsaenz@...nel.org>,
        Xiongfeng Wang <wangxiongfeng2@...wei.com>,
        Neeraj Upadhyay <quic_neeraju@...cinc.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Yu Liao <liaoyu15@...wei.com>,
        Boqun Feng <boqun.feng@...il.com>,
        Marcelo Tosatti <mtosatti@...hat.com>,
        Paul Gortmaker <paul.gortmaker@...driver.com>,
        Uladzislau Rezki <uladzislau.rezki@...y.com>,
        Joel Fernandes <joel@...lfernandes.org>
Subject: Re: [PATCH 05/19] context_tracking: Split user tracking Kconfig

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@...nel.org>
> Cc: Paul E. McKenney <paulmck@...nel.org>
> Cc: Peter Zijlstra <peterz@...radead.org>
> Cc: Thomas Gleixner <tglx@...utronix.de>
> Cc: Neeraj Upadhyay <quic_neeraju@...cinc.com>
> Cc: Uladzislau Rezki <uladzislau.rezki@...y.com>
> Cc: Joel Fernandes <joel@...lfernandes.org>
> Cc: Boqun Feng <boqun.feng@...il.com>
> Cc: Nicolas Saenz Julienne <nsaenz@...nel.org>
> Cc: Marcelo Tosatti <mtosatti@...hat.com>
> Cc: Xiongfeng Wang <wangxiongfeng2@...wei.com>
> Cc: Yu Liao<liaoyu15@...wei.com>
> Cc: Phil Auld <pauld@...hat.com>
> Cc: Paul Gortmaker<paul.gortmaker@...driver.com>
> Cc: Alex Belits <abelits@...vell.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
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ