On 10/23/2013 06:47 PM, Steven Rostedt wrote: > On Wed, 2013-10-23 at 18:38 +0800, Chen Gang wrote: > >> >> Signed-off-by: Chen Gang <[email protected]> >> --- >> include/linux/context_tracking.h | 14 ++------------ >> kernel/context_tracking.c | 12 ++++++++++++ >> 2 files changed, 14 insertions(+), 12 deletions(-) >> >> diff --git a/include/linux/context_tracking.h >> b/include/linux/context_tracking.h >> index 1581587..bf220f7 100644 >> --- a/include/linux/context_tracking.h >> +++ b/include/linux/context_tracking.h >> @@ -10,23 +10,13 @@ >> #ifdef CONFIG_CONTEXT_TRACKING >> extern void context_tracking_cpu_set(int cpu); >> >> +extern void user_enter(void); >> +extern void user_exit(void); >> extern void context_tracking_user_enter(void); >> extern void context_tracking_user_exit(void); >> extern void __context_tracking_task_switch(struct task_struct *prev, >> struct task_struct *next); >> >> -static inline void user_enter(void) >> -{ >> - if (static_key_false(&context_tracking_enabled)) >> - context_tracking_user_enter(); >> - >> -} >> -static inline void user_exit(void) >> -{ >> - if (static_key_false(&context_tracking_enabled)) >> - context_tracking_user_exit(); >> -} >> - >> static inline enum ctx_state exception_enter(void) >> { >> enum ctx_state prev_ctx; >> diff --git a/kernel/context_tracking.c b/kernel/context_tracking.c >> index 013161f..c03d0d6 100644 >> --- a/kernel/context_tracking.c >> +++ b/kernel/context_tracking.c >> @@ -29,6 +29,18 @@ EXPORT_SYMBOL_GPL(context_tracking_enabled); >> DEFINE_PER_CPU(struct context_tracking, context_tracking); >> EXPORT_SYMBOL_GPL(context_tracking); >> >> +void user_enter(void) >> +{ >> + if (static_key_false(&context_tracking_enabled)) >> + context_tracking_user_enter(); >> +} >> + >> +void user_exit(void) >> +{ >> + if (static_key_false(&context_tracking_enabled)) >> + context_tracking_user_exit(); >> +} >> + >> void context_tracking_cpu_set(int cpu) >> { >> if (!per_cpu(context_tracking.active, cpu)) { > > Ug, you just put an unneeded function call into a fast path because of a > failure with a particular arch. > > If you need the assembly to call this code, then make yourself a wrapper > function to call that does the user_enter/exit() calls. > > void arch_user_enter(void) > { > user_enter(); > } >
OK, thanks. That sounds reasonable to me. I will send related patch to arm guys. :-) Thanks. -- Chen Gang -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

