Commit f163f030 authored by Frederic Weisbecker's avatar Frederic Weisbecker Committed by Paul E. McKenney

context_tracking: Rename context_tracking_user_enter/exit() to user_enter/exit_callable()

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.

[ frederic: Apply Max Filippov feedback. ]
Signed-off-by: default avatarFrederic 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: default avatarPaul E. McKenney <paulmck@kernel.org>
Reviewed-by: default avatarNicolas Saenz Julienne <nsaenzju@redhat.com>
Tested-by: default avatarNicolas Saenz Julienne <nsaenzju@redhat.com>
parent 0ffc781a
...@@ -369,10 +369,10 @@ ALT_UP_B(.L1_\@) ...@@ -369,10 +369,10 @@ ALT_UP_B(.L1_\@)
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
.if \save .if \save
stmdb sp!, {r0-r3, ip, lr} stmdb sp!, {r0-r3, ip, lr}
bl context_tracking_user_exit bl user_exit_callable
ldmia sp!, {r0-r3, ip, lr} ldmia sp!, {r0-r3, ip, lr}
.else .else
bl context_tracking_user_exit bl user_exit_callable
.endif .endif
#endif #endif
.endm .endm
...@@ -381,10 +381,10 @@ ALT_UP_B(.L1_\@) ...@@ -381,10 +381,10 @@ ALT_UP_B(.L1_\@)
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
.if \save .if \save
stmdb sp!, {r0-r3, ip, lr} stmdb sp!, {r0-r3, ip, lr}
bl context_tracking_user_enter bl user_enter_callable
ldmia sp!, {r0-r3, ip, lr} ldmia sp!, {r0-r3, ip, lr}
.else .else
bl context_tracking_user_enter bl user_enter_callable
.endif .endif
#endif #endif
.endm .endm
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
mfcr a0, epsr mfcr a0, epsr
btsti a0, 31 btsti a0, 31
bt 1f bt 1f
jbsr context_tracking_user_exit jbsr user_exit_callable
ldw a0, (sp, LSAVE_A0) ldw a0, (sp, LSAVE_A0)
ldw a1, (sp, LSAVE_A1) ldw a1, (sp, LSAVE_A1)
ldw a2, (sp, LSAVE_A2) ldw a2, (sp, LSAVE_A2)
...@@ -160,7 +160,7 @@ ret_from_exception: ...@@ -160,7 +160,7 @@ ret_from_exception:
cmpnei r10, 0 cmpnei r10, 0
bt exit_work bt exit_work
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
jbsr context_tracking_user_enter jbsr user_enter_callable
#endif #endif
1: 1:
#ifdef CONFIG_PREEMPTION #ifdef CONFIG_PREEMPTION
......
...@@ -112,11 +112,11 @@ _save_context: ...@@ -112,11 +112,11 @@ _save_context:
#endif #endif
#ifdef CONFIG_CONTEXT_TRACKING #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 li a0, SR_PP
and a0, s1, a0 and a0, s1, a0
bnez a0, skip_context_tracking bnez a0, skip_context_tracking
call context_tracking_user_exit call user_exit_callable
skip_context_tracking: skip_context_tracking:
#endif #endif
...@@ -270,7 +270,7 @@ resume_userspace: ...@@ -270,7 +270,7 @@ resume_userspace:
bnez s1, work_pending bnez s1, work_pending
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
call context_tracking_user_enter call user_enter_callable
#endif #endif
/* Save unwound kernel stack pointer in thread_info */ /* Save unwound kernel stack pointer in thread_info */
......
...@@ -458,7 +458,7 @@ KABI_W or a3, a3, a2 ...@@ -458,7 +458,7 @@ KABI_W or a3, a3, a2
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
l32i abi_tmp0, a1, PT_PS l32i abi_tmp0, a1, PT_PS
bbci.l abi_tmp0, PS_UM_BIT, 1f bbci.l abi_tmp0, PS_UM_BIT, 1f
abi_call context_tracking_user_exit abi_call user_exit_callable
1: 1:
#endif #endif
...@@ -545,7 +545,7 @@ common_exception_return: ...@@ -545,7 +545,7 @@ common_exception_return:
.Lexit_tif_loop_user: .Lexit_tif_loop_user:
#ifdef CONFIG_CONTEXT_TRACKING #ifdef CONFIG_CONTEXT_TRACKING
abi_call context_tracking_user_enter abi_call user_enter_callable
#endif #endif
#ifdef CONFIG_HAVE_HW_BREAKPOINT #ifdef CONFIG_HAVE_HW_BREAKPOINT
_bbci.l abi_saved0, TIF_DB_DISABLED, 1f _bbci.l abi_saved0, TIF_DB_DISABLED, 1f
......
...@@ -19,8 +19,8 @@ extern void __ct_user_exit(enum ctx_state state); ...@@ -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_enter(enum ctx_state state);
extern void context_tracking_exit(enum ctx_state state); extern void context_tracking_exit(enum ctx_state state);
extern void context_tracking_user_enter(void); extern void user_enter_callable(void);
extern void context_tracking_user_exit(void); extern void user_exit_callable(void);
static inline void user_enter(void) static inline void user_enter(void)
{ {
......
...@@ -134,19 +134,22 @@ void context_tracking_enter(enum ctx_state state) ...@@ -134,19 +134,22 @@ void context_tracking_enter(enum ctx_state state)
NOKPROBE_SYMBOL(context_tracking_enter); NOKPROBE_SYMBOL(context_tracking_enter);
EXPORT_SYMBOL_GPL(context_tracking_enter); EXPORT_SYMBOL_GPL(context_tracking_enter);
/* /**
* OBSOLETE: * user_enter_callable() - Unfortunate ASM callable version of user_enter() for
* This function should be noinstr but it unsafely calls local_irq_restore(), * archs that didn't manage to check the context tracking
* involving illegal RCU uses through tracing and lockdep. * 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 * 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 * way is to call user_enter_irqoff(). It should be the arch entry code
* responsibility to call into context tracking with IRQs disabled. * responsibility to call into context tracking with IRQs disabled.
*/ */
void context_tracking_user_enter(void) void user_enter_callable(void)
{ {
user_enter(); user_enter();
} }
NOKPROBE_SYMBOL(context_tracking_user_enter); NOKPROBE_SYMBOL(user_enter_callable);
/** /**
* __ct_user_exit - Inform the context tracking that the CPU is * __ct_user_exit - Inform the context tracking that the CPU is
...@@ -208,19 +211,22 @@ void context_tracking_exit(enum ctx_state state) ...@@ -208,19 +211,22 @@ void context_tracking_exit(enum ctx_state state)
NOKPROBE_SYMBOL(context_tracking_exit); NOKPROBE_SYMBOL(context_tracking_exit);
EXPORT_SYMBOL_GPL(context_tracking_exit); EXPORT_SYMBOL_GPL(context_tracking_exit);
/* /**
* OBSOLETE: * user_exit_callable() - Unfortunate ASM callable version of user_exit() for
* This function should be noinstr but it unsafely calls local_irq_save(), * 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 * 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 * 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 * user_exit_irqoff(). It should be the arch entry code responsibility to
* call into context tracking with IRQs disabled. * call into context tracking with IRQs disabled.
*/ */
void context_tracking_user_exit(void) void user_exit_callable(void)
{ {
user_exit(); user_exit();
} }
NOKPROBE_SYMBOL(context_tracking_user_exit); NOKPROBE_SYMBOL(user_exit_callable);
void __init context_tracking_cpu_set(int cpu) void __init context_tracking_cpu_set(int cpu)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment