提交 c467ea76 编写于 作者: F Frederic Weisbecker

context_tracking: Rename context symbols to prepare for transition state

Current context tracking symbols are designed to express living state.
As such they are prefixed with "IN_": IN_USER, IN_KERNEL.

Now we are going to use these symbols to also express state transitions
such as context_tracking_enter(IN_USER) or context_tracking_exit(IN_USER).
But while the "IN_" prefix works well to express entering a context, it's
confusing to depict a context exit: context_tracking_exit(IN_USER)
could mean two things:
	1) We are exiting the current context to enter user context.
	2) We are exiting the user context
We want 2) but the reviewer may be confused and understand 1)

So lets disambiguate these symbols and rename them to CONTEXT_USER and
CONTEXT_KERNEL.
Acked-by: NRik van Riel <riel@redhat.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Will deacon <will.deacon@arm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
上级 c5ae732a
...@@ -123,7 +123,7 @@ enum ctx_state ist_enter(struct pt_regs *regs) ...@@ -123,7 +123,7 @@ enum ctx_state ist_enter(struct pt_regs *regs)
* but we need to notify RCU. * but we need to notify RCU.
*/ */
rcu_nmi_enter(); rcu_nmi_enter();
prev_state = IN_KERNEL; /* the value is irrelevant. */ prev_state = CONTEXT_KERNEL; /* the value is irrelevant. */
} }
/* /*
......
...@@ -43,7 +43,7 @@ static inline enum ctx_state exception_enter(void) ...@@ -43,7 +43,7 @@ static inline enum ctx_state exception_enter(void)
static inline void exception_exit(enum ctx_state prev_ctx) static inline void exception_exit(enum ctx_state prev_ctx)
{ {
if (context_tracking_is_enabled()) { if (context_tracking_is_enabled()) {
if (prev_ctx == IN_USER) if (prev_ctx == CONTEXT_USER)
context_tracking_user_enter(); context_tracking_user_enter();
} }
} }
......
...@@ -13,8 +13,8 @@ struct context_tracking { ...@@ -13,8 +13,8 @@ struct context_tracking {
*/ */
bool active; bool active;
enum ctx_state { enum ctx_state {
IN_KERNEL = 0, CONTEXT_KERNEL = 0,
IN_USER, CONTEXT_USER,
} state; } state;
}; };
...@@ -34,7 +34,7 @@ static inline bool context_tracking_cpu_is_enabled(void) ...@@ -34,7 +34,7 @@ static inline bool context_tracking_cpu_is_enabled(void)
static inline bool context_tracking_in_user(void) static inline bool context_tracking_in_user(void)
{ {
return __this_cpu_read(context_tracking.state) == IN_USER; return __this_cpu_read(context_tracking.state) == CONTEXT_USER;
} }
#else #else
static inline bool context_tracking_in_user(void) { return false; } static inline bool context_tracking_in_user(void) { return false; }
......
...@@ -75,7 +75,7 @@ void context_tracking_user_enter(void) ...@@ -75,7 +75,7 @@ void context_tracking_user_enter(void)
WARN_ON_ONCE(!current->mm); WARN_ON_ONCE(!current->mm);
local_irq_save(flags); local_irq_save(flags);
if ( __this_cpu_read(context_tracking.state) != IN_USER) { if ( __this_cpu_read(context_tracking.state) != CONTEXT_USER) {
if (__this_cpu_read(context_tracking.active)) { if (__this_cpu_read(context_tracking.active)) {
trace_user_enter(0); trace_user_enter(0);
/* /*
...@@ -101,7 +101,7 @@ void context_tracking_user_enter(void) ...@@ -101,7 +101,7 @@ void context_tracking_user_enter(void)
* OTOH we can spare the calls to vtime and RCU when context_tracking.active * OTOH we can spare the calls to vtime and RCU when context_tracking.active
* is false because we know that CPU is not tickless. * is false because we know that CPU is not tickless.
*/ */
__this_cpu_write(context_tracking.state, IN_USER); __this_cpu_write(context_tracking.state, CONTEXT_USER);
} }
local_irq_restore(flags); local_irq_restore(flags);
} }
...@@ -129,7 +129,7 @@ void context_tracking_user_exit(void) ...@@ -129,7 +129,7 @@ void context_tracking_user_exit(void)
return; return;
local_irq_save(flags); local_irq_save(flags);
if (__this_cpu_read(context_tracking.state) == IN_USER) { if (__this_cpu_read(context_tracking.state) == CONTEXT_USER) {
if (__this_cpu_read(context_tracking.active)) { if (__this_cpu_read(context_tracking.active)) {
/* /*
* We are going to run code that may use RCU. Inform * We are going to run code that may use RCU. Inform
...@@ -139,7 +139,7 @@ void context_tracking_user_exit(void) ...@@ -139,7 +139,7 @@ void context_tracking_user_exit(void)
vtime_user_exit(current); vtime_user_exit(current);
trace_user_exit(0); trace_user_exit(0);
} }
__this_cpu_write(context_tracking.state, IN_KERNEL); __this_cpu_write(context_tracking.state, CONTEXT_KERNEL);
} }
local_irq_restore(flags); local_irq_restore(flags);
} }
......
...@@ -2818,7 +2818,7 @@ asmlinkage __visible void __sched schedule_user(void) ...@@ -2818,7 +2818,7 @@ asmlinkage __visible void __sched schedule_user(void)
* we find a better solution. * we find a better solution.
* *
* NB: There are buggy callers of this function. Ideally we * NB: There are buggy callers of this function. Ideally we
* should warn if prev_state != IN_USER, but that will trigger * should warn if prev_state != CONTEXT_USER, but that will trigger
* too frequently to make sense yet. * too frequently to make sense yet.
*/ */
enum ctx_state prev_state = exception_enter(); enum ctx_state prev_state = exception_enter();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册