From: Frederic Weisbecker <frederic@kernel.org>
To: "Paul E . McKenney" <paulmck@kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Frederic Weisbecker <frederic@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Phil Auld <pauld@redhat.com>, Alex Belits <abelits@marvell.com>,
Nicolas Saenz Julienne <nsaenz@kernel.org>,
Marco Elver <elver@google.com>,
Xiongfeng Wang <wangxiongfeng2@huawei.com>,
Neeraj Upadhyay <quic_neeraju@quicinc.com>,
Thomas Gleixner <tglx@linutronix.de>,
Nicolas Saenz Julienne <nsaenzju@redhat.com>,
Max Filippov <jcmvbkbc@gmail.com>, Yu Liao <liaoyu15@huawei.com>,
Boqun Feng <boqun.feng@gmail.com>,
Marcelo Tosatti <mtosatti@redhat.com>,
kernel test robot <lkp@intel.com>,
Paul Gortmaker <paul.gortmaker@windriver.com>,
Uladzislau Rezki <uladzislau.rezki@sony.com>,
Joel Fernandes <joel@joelfernandes.org>
Subject: [PATCH 04/20] context_tracking: Rename context_tracking_user_enter/exit() to user_enter/exit_callable()
Date: Tue, 28 Jun 2022 15:16:03 +0200 [thread overview]
Message-ID: <20220628131619.2109651-5-frederic@kernel.org> (raw)
In-Reply-To: <20220628131619.2109651-1-frederic@kernel.org>
context_tracking_user_enter() and context_tracking_user_exit() are
ASM callable versions of user_enter() and user_exit() for architectures
that didn't manage to check the context tracking static key from ASM.
Change those function names to better reflect their purpose.
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: Max Filippov <jcmvbkbc@gmail.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>
---
| 8 ++++----
arch/csky/kernel/entry.S | 4 ++--
arch/riscv/kernel/entry.S | 6 +++---
arch/xtensa/kernel/entry.S | 4 ++--
include/linux/context_tracking.h | 4 ++--
kernel/context_tracking.c | 28 +++++++++++++++++-----------
6 files changed, 30 insertions(+), 24 deletions(-)
--git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 5865621bf691..95def2b38d1c 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -369,10 +369,10 @@ ALT_UP_B(.L1_\@)
#ifdef CONFIG_CONTEXT_TRACKING
.if \save
stmdb sp!, {r0-r3, ip, lr}
- bl context_tracking_user_exit
+ bl user_exit_callable
ldmia sp!, {r0-r3, ip, lr}
.else
- bl context_tracking_user_exit
+ bl user_exit_callable
.endif
#endif
.endm
@@ -381,10 +381,10 @@ ALT_UP_B(.L1_\@)
#ifdef CONFIG_CONTEXT_TRACKING
.if \save
stmdb sp!, {r0-r3, ip, lr}
- bl context_tracking_user_enter
+ bl user_enter_callable
ldmia sp!, {r0-r3, ip, lr}
.else
- bl context_tracking_user_enter
+ bl user_enter_callable
.endif
#endif
.endm
diff --git a/arch/csky/kernel/entry.S b/arch/csky/kernel/entry.S
index a4ababf25e24..bc734d17c16f 100644
--- a/arch/csky/kernel/entry.S
+++ b/arch/csky/kernel/entry.S
@@ -23,7 +23,7 @@
mfcr a0, epsr
btsti a0, 31
bt 1f
- jbsr context_tracking_user_exit
+ jbsr user_exit_callable
ldw a0, (sp, LSAVE_A0)
ldw a1, (sp, LSAVE_A1)
ldw a2, (sp, LSAVE_A2)
@@ -160,7 +160,7 @@ ret_from_exception:
cmpnei r10, 0
bt exit_work
#ifdef CONFIG_CONTEXT_TRACKING
- jbsr context_tracking_user_enter
+ jbsr user_enter_callable
#endif
1:
#ifdef CONFIG_PREEMPTION
diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
index 2e5b88ca11ce..12f6bba57e33 100644
--- a/arch/riscv/kernel/entry.S
+++ b/arch/riscv/kernel/entry.S
@@ -112,11 +112,11 @@ _save_context:
#endif
#ifdef CONFIG_CONTEXT_TRACKING
- /* If previous state is in user mode, call context_tracking_user_exit. */
+ /* If previous state is in user mode, call user_exit_callable(). */
li a0, SR_PP
and a0, s1, a0
bnez a0, skip_context_tracking
- call context_tracking_user_exit
+ call user_exit_callable
skip_context_tracking:
#endif
@@ -270,7 +270,7 @@ resume_userspace:
bnez s1, work_pending
#ifdef CONFIG_CONTEXT_TRACKING
- call context_tracking_user_enter
+ call user_enter_callable
#endif
/* Save unwound kernel stack pointer in thread_info */
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S
index e3eae648ba2e..d72bcafae90c 100644
--- a/arch/xtensa/kernel/entry.S
+++ b/arch/xtensa/kernel/entry.S
@@ -458,7 +458,7 @@ KABI_W or a3, a3, a2
#ifdef CONFIG_CONTEXT_TRACKING
l32i abi_tmp0, a1, PT_PS
bbci.l abi_tmp0, PS_UM_BIT, 1f
- abi_call context_tracking_user_exit
+ abi_call user_exit_callable
1:
#endif
@@ -545,7 +545,7 @@ common_exception_return:
.Lexit_tif_loop_user:
#ifdef CONFIG_CONTEXT_TRACKING
- abi_call context_tracking_user_enter
+ abi_call user_enter_callable
#endif
#ifdef CONFIG_HAVE_HW_BREAKPOINT
_bbci.l abi_saved0, TIF_DB_DISABLED, 1f
diff --git a/include/linux/context_tracking.h b/include/linux/context_tracking.h
index 773035124bad..69532cd18f72 100644
--- a/include/linux/context_tracking.h
+++ b/include/linux/context_tracking.h
@@ -19,8 +19,8 @@ extern void __ct_user_exit(enum ctx_state state);
extern void context_tracking_enter(enum ctx_state state);
extern void context_tracking_exit(enum ctx_state state);
-extern void context_tracking_user_enter(void);
-extern void context_tracking_user_exit(void);
+extern void user_enter_callable(void);
+extern void user_exit_callable(void);
static inline void user_enter(void)
{
diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c
index 88c60ab39fbb..8f7dd5799bda 100644
--- a/kernel/context_tracking.c
+++ b/kernel/context_tracking.c
@@ -134,19 +134,22 @@ void context_tracking_enter(enum ctx_state state)
NOKPROBE_SYMBOL(context_tracking_enter);
EXPORT_SYMBOL_GPL(context_tracking_enter);
-/*
- * OBSOLETE:
- * This function should be noinstr but it unsafely calls local_irq_restore(),
- * involving illegal RCU uses through tracing and lockdep.
+/**
+ * user_enter_callable() - Unfortunate ASM callable version of user_enter() for
+ * archs that didn't manage to check the context tracking
+ * static key from low level code.
+ *
+ * This OBSOLETE function should be noinstr but it unsafely calls
+ * local_irq_restore(), involving illegal RCU uses through tracing and lockdep.
* This is unlikely to be fixed as this function is obsolete. The preferred
* way is to call user_enter_irqoff(). It should be the arch entry code
* responsibility to call into context tracking with IRQs disabled.
*/
-void context_tracking_user_enter(void)
+void user_enter_callable(void)
{
user_enter();
}
-NOKPROBE_SYMBOL(context_tracking_user_enter);
+NOKPROBE_SYMBOL(user_enter_callable);
/**
* __ct_user_exit - Inform the context tracking that the CPU is
@@ -208,19 +211,22 @@ void context_tracking_exit(enum ctx_state state)
NOKPROBE_SYMBOL(context_tracking_exit);
EXPORT_SYMBOL_GPL(context_tracking_exit);
-/*
- * OBSOLETE:
- * This function should be noinstr but it unsafely calls local_irq_save(),
+/**
+ * user_exit_callable() - Unfortunate ASM callable version of user_exit() for
+ * archs that didn't manage to check the context tracking
+ * static key from low level code.
+ *
+ * This OBSOLETE function should be noinstr but it unsafely calls local_irq_save(),
* involving illegal RCU uses through tracing and lockdep. This is unlikely
* to be fixed as this function is obsolete. The preferred way is to call
* user_exit_irqoff(). It should be the arch entry code responsibility to
* call into context tracking with IRQs disabled.
*/
-void context_tracking_user_exit(void)
+void user_exit_callable(void)
{
user_exit();
}
-NOKPROBE_SYMBOL(context_tracking_user_exit);
+NOKPROBE_SYMBOL(user_exit_callable);
void __init context_tracking_cpu_set(int cpu)
{
--
2.25.1
next prev parent reply other threads:[~2022-06-28 13:17 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-28 13:15 [PATCH 00/20] rcu/context-tracking: Merge RCU eqs-dynticks counter to context tracking v5 Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 01/20] context_tracking: Remove unused context_tracking_in_user() Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 02/20] context_tracking: Add a note about noinstr VS unsafe context tracking functions Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 03/20] context_tracking: Rename __context_tracking_enter/exit() to __ct_user_enter/exit() Frederic Weisbecker
2022-06-28 13:16 ` Frederic Weisbecker [this message]
2022-06-28 13:16 ` [PATCH 05/20] context_tracking: Rename context_tracking_enter/exit() to ct_user_enter/exit() Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 06/20] context_tracking: Rename context_tracking_cpu_set() to ct_cpu_track_user() Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 07/20] context_tracking: Split user tracking Kconfig Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 08/20] context_tracking: Take idle eqs entrypoints over RCU Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 09/20] context_tracking: Take IRQ " Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 10/20] context_tracking: Take NMI " Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 11/20] rcu/context-tracking: Remove rcu_irq_enter/exit() Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 12/20] rcu/context_tracking: Move dynticks counter to context tracking Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 13/20] rcu/context_tracking: Move dynticks_nesting " Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 14/20] rcu/context_tracking: Move dynticks_nmi_nesting " Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 15/20] rcu/context-tracking: Move deferred nocb resched " Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 16/20] rcu/context-tracking: Move RCU-dynticks internal functions to context_tracking Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 17/20] rcu/context-tracking: Remove unused and/or unecessary middle functions Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 18/20] context_tracking: Convert state to atomic_t Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 19/20] MAINTAINERS: Add Paul as context tracking maintainer Frederic Weisbecker
2022-06-28 13:16 ` [PATCH 20/20] context_tracking: Use arch_atomic_read() in __ct_state for KASAN Frederic Weisbecker
2022-06-30 0:10 ` [PATCH 00/20] rcu/context-tracking: Merge RCU eqs-dynticks counter to context tracking v5 Paul E. McKenney
2022-10-11 11:37 ` Xiongfeng Wang
2022-10-11 19:12 ` Frederic Weisbecker
2022-10-12 1:08 ` Xiongfeng Wang
-- strict thread matches above, loose matches on Subject: below --
2022-06-08 14:40 [PATCH 00/20] rcu/context-tracking: Merge RCU eqs-dynticks counter to context tracking v4 Frederic Weisbecker
2022-06-08 14:40 ` [PATCH 04/20] context_tracking: Rename context_tracking_user_enter/exit() to user_enter/exit_callable() Frederic Weisbecker
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=20220628131619.2109651-5-frederic@kernel.org \
--to=frederic@kernel.org \
--cc=abelits@marvell.com \
--cc=boqun.feng@gmail.com \
--cc=elver@google.com \
--cc=jcmvbkbc@gmail.com \
--cc=joel@joelfernandes.org \
--cc=liaoyu15@huawei.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=mtosatti@redhat.com \
--cc=nsaenz@kernel.org \
--cc=nsaenzju@redhat.com \
--cc=paul.gortmaker@windriver.com \
--cc=pauld@redhat.com \
--cc=paulmck@kernel.org \
--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