context_tracking: Split user tracking Kconfig
authorFrederic Weisbecker <frederic@kernel.org>
Wed, 8 Jun 2022 14:40:24 +0000 (16:40 +0200)
committerPaul E. McKenney <paulmck@kernel.org>
Thu, 30 Jun 2022 00:04:09 +0000 (17:04 -0700)
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
separate feature. Prepare Kconfig for that.

[ frederic: Apply Max Filippov feedback. ]

Signed-off-by: Frederic Weisbecker <frederic@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>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Reviewed-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Tested-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
25 files changed:
Documentation/features/time/context-tracking/arch-support.txt
arch/Kconfig
arch/arm/Kconfig
arch/arm/kernel/entry-common.S
arch/arm/kernel/entry-header.S
arch/arm64/Kconfig
arch/csky/Kconfig
arch/csky/kernel/entry.S
arch/loongarch/Kconfig
arch/mips/Kconfig
arch/powerpc/Kconfig
arch/powerpc/include/asm/context_tracking.h
arch/riscv/Kconfig
arch/riscv/kernel/entry.S
arch/sparc/Kconfig
arch/sparc/kernel/rtrap_64.S
arch/x86/Kconfig
arch/xtensa/Kconfig
arch/xtensa/kernel/entry.S
include/linux/context_tracking.h
include/linux/context_tracking_state.h
init/Kconfig
kernel/context_tracking.c
kernel/sched/core.c
kernel/time/Kconfig

index c9e0a16290e68ee57c0307b9b1a79e73291d4ddd..e59071a4909013c9d7ea02e5d0426a0bd7e95b3e 100644 (file)
@@ -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|
index fcf9a41a4ef5b15efaac04bc85c420a435603fb8..154b7b78da093f714a2a0f0f5bd5c5d4187425a8 100644 (file)
@@ -774,7 +774,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
        bool
        help
          Provide kernel/user boundaries probes necessary for subsystems
@@ -785,7 +785,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()
index 7630ba9cb6ccc30cd75672c57e0aa248f5a298c9..9acc6aac591268b07158908d3f9348f5e2bb1e44 100644 (file)
@@ -84,7 +84,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_BUILDTIME_MCOUNT_SORT
        select HAVE_DEBUG_KMEMLEAK if !XIP_KERNEL
index 7aa3ded4af9292d006e2346efa554187467aa393..37a0125fc926546ed50290d21020dc5e3aac5c3d 100644 (file)
@@ -28,7 +28,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
@@ -38,7 +38,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,
index 95def2b38d1caa796453a5178dcfdf0ae13f9513..99411fa913501cad8b55ef04a2b8ab3d44f3e39e 100644 (file)
@@ -366,7 +366,7 @@ ALT_UP_B(.L1_\@)
  * 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
@@ -378,7 +378,7 @@ ALT_UP_B(.L1_\@)
        .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
index 1652a9800ebee645616948df2249e186e948baff..7c5dd2af9ca95ef7a393e2bee7715240a8fc9755 100644 (file)
@@ -174,7 +174,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
index 21d72b078eefc95ac9277f203e07cc20029599ed..f55ba1745f7b961913cd785f0a7d9f3ff9ea9c5c 100644 (file)
@@ -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
index bc734d17c16f4056c6af3401c9d96a46e3b94856..547b4cd1b24b4d67d34d2b2c72c027e981049f82 100644 (file)
@@ -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:
index 1920d52653b4150571d8551b713ae1ed4a9b4b69..130dc65f3c858cddb79a4f9a4d5d01b91e44ac37 100644 (file)
@@ -76,7 +76,7 @@ config LOONGARCH
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE
        select HAVE_ASM_MODVERSIONS
-       select HAVE_CONTEXT_TRACKING
+       select HAVE_CONTEXT_TRACKING_USER
        select HAVE_COPY_THREAD_TLS
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_DMA_CONTIGUOUS
index db09d45d59ec751486224f3af38524d0875ed3a0..9457894db237518cf7a3332fc3f7b038b3afbec8 100644 (file)
@@ -56,7 +56,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
index c2ce2e60c8f0f65f0c3ca1ad80142946b2a9d0ec..874c8d81284adfe19f4dee035d6646219b7e544b 100644 (file)
@@ -202,7 +202,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
index f2682b28b0502e95b1ba74994806df92ad1f46d4..4b63931c49e0e87650e00d81d077d3eeff923d49 100644 (file)
@@ -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
index 32ffef9f6e5b4f116034fb1c65388e80d082c361..29b46f2173457e231af7db23c458b31c3e8525bc 100644 (file)
@@ -86,7 +86,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
index 12f6bba57e3352b2ce2db997e0bdae5d26881308..b9eda3fcbd6d74e4e2b3aa6e10cc41f5d6359d60 100644 (file)
@@ -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)
@@ -269,7 +269,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
 
index ba449c47effd8d975abf2f1130acef46e46662f9..9232411a8821ac9f1e860cb1f6ef40e4ba7b2826 100644 (file)
@@ -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
index c5fd4b450d9b631b694bfd706e1959acef1d91ba..eef102765a7e2956e26ba7bfec37629d251d299d 100644 (file)
@@ -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
index be0b95e51df663f94a5c7e4c3fc3965179d26bdc..b0a6dbbb760bcb19664c59cd593673b5997ddc8d 100644 (file)
@@ -186,8 +186,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 HAVE_OBJTOOL
        select HAVE_BUILDTIME_MCOUNT_SORT
index 0b0f0172cced55565d35c3b2201a9be1776e1e47..7927fed7bc835c66aa127cfaf1112f9ec67dd9e1 100644 (file)
@@ -33,7 +33,7 @@ config XTENSA
        select HAVE_ARCH_KCSAN
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
-       select HAVE_CONTEXT_TRACKING
+       select HAVE_CONTEXT_TRACKING_USER
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_CONTIGUOUS
        select HAVE_EXIT_THREAD
index d72bcafae90cbded3ee9b5f0e62b943d4e7717ee..fb67d85116e413f053ca16081a3d9428267eb6de 100644 (file)
@@ -455,7 +455,7 @@ KABI_W      or      a3, a3, a2
        abi_call        trace_hardirqs_off
 1:
 #endif
-#ifdef CONFIG_CONTEXT_TRACKING
+#ifdef CONFIG_CONTEXT_TRACKING_USER
        l32i            abi_tmp0, a1, PT_PS
        bbci.l          abi_tmp0, PS_UM_BIT, 1f
        abi_call        user_exit_callable
@@ -544,7 +544,7 @@ common_exception_return:
        j               .Lrestore_state
 
 .Lexit_tif_loop_user:
-#ifdef CONFIG_CONTEXT_TRACKING
+#ifdef CONFIG_CONTEXT_TRACKING_USER
        abi_call        user_enter_callable
 #endif
 #ifdef CONFIG_HAVE_HW_BREAKPOINT
index 63259fece7c7683bb1e3f11e36f2b69e169ffdd6..e35ae66b4794ea16c56f0e4ffc659e56fa8f0403 100644 (file)
@@ -10,7 +10,7 @@
 #include <asm/ptrace.h>
 
 
-#ifdef CONFIG_CONTEXT_TRACKING
+#ifdef CONFIG_CONTEXT_TRACKING_USER
 extern void ct_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
index edc7b46376a6b813888a40f4ab7cc1b7894ef998..2b46afe105a96125ea4759e73adb48f5067ad774 100644 (file)
@@ -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);
 
@@ -45,6 +45,6 @@ static inline bool context_tracking_enabled_this_cpu(void)
 static __always_inline bool context_tracking_enabled(void) { return false; }
 static __always_inline bool context_tracking_enabled_cpu(int cpu) { return false; }
 static __always_inline bool context_tracking_enabled_this_cpu(void) { return false; }
-#endif /* CONFIG_CONTEXT_TRACKING */
+#endif /* CONFIG_CONTEXT_TRACKING_USER */
 
 #endif
index c7900e8975f181857840d861e1cddd4e8201ecc4..06454d19e2f0a6b22f2d85511066754f8b7de6be 100644 (file)
@@ -494,11 +494,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
index d361bd52e4e1302818361f76dba1b24ca8b0f038..f3dec1be2bf62a077a85aad58d3382c52e842dda 100644 (file)
@@ -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>
 
@@ -252,7 +254,7 @@ void __init ct_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;
@@ -261,3 +263,5 @@ void __init context_tracking_init(void)
                ct_cpu_track_user(cpu);
 }
 #endif
+
+#endif /* #ifdef CONFIG_CONTEXT_TRACKING_USER */
index da0bf6fe9ecdcf697a1f9dff304c71d0d3433155..883167a57bf9d5443d3b93e3c6dab1bf53d90c72 100644 (file)
@@ -6559,7 +6559,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)
 {
        /*
index 27b7868b5c30d140119ffef6a87f7240ac5bba08..41f99bcfe9e668ca451a95a5c549b7c857ffa517 100644 (file)
@@ -73,6 +73,9 @@ config TIME_KUNIT_TEST
 
          If unsure, say N.
 
+config CONTEXT_TRACKING
+       bool
+
 if GENERIC_CLOCKEVENTS
 menu "Timers subsystem"
 
@@ -111,7 +114,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
@@ -137,31 +140,37 @@ config NO_HZ_FULL
 
 endchoice
 
-config CONTEXT_TRACKING
-       bool
+config CONTEXT_TRACKING_USER
+       bool
+       depends on HAVE_CONTEXT_TRACKING_USER
+       select CONTEXT_TRACKING
+       help
+         Track transitions between kernel and user on behalf of RCU and
+         tickless cputime accounting. The former case relies on context
+         tracking to enter/exit RCU extended quiescent states.
 
-config CONTEXT_TRACKING_FORCE
-       bool "Force context tracking"
-       depends on CONTEXT_TRACKING
+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.