Skip to content

Commit

Permalink
context_tracking: Rename context symbols to prepare for transition state
Browse files Browse the repository at this point in the history
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: Rik van Riel <[email protected]>
Cc: Paul E. McKenney <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Will deacon <[email protected]>
Cc: Marcelo Tosatti <[email protected]>
Cc: Christian Borntraeger <[email protected]>
Cc: Luiz Capitulino <[email protected]>
Cc: Paolo Bonzini <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
  • Loading branch information
fweisbec committed Mar 9, 2015
1 parent c5ae732 commit c467ea7
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 10 deletions.
2 changes: 1 addition & 1 deletion arch/x86/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ enum ctx_state ist_enter(struct pt_regs *regs)
* but we need to notify RCU.
*/
rcu_nmi_enter();
prev_state = IN_KERNEL; /* the value is irrelevant. */
prev_state = CONTEXT_KERNEL; /* the value is irrelevant. */
}

/*
Expand Down
2 changes: 1 addition & 1 deletion include/linux/context_tracking.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ static inline enum ctx_state exception_enter(void)
static inline void exception_exit(enum ctx_state prev_ctx)
{
if (context_tracking_is_enabled()) {
if (prev_ctx == IN_USER)
if (prev_ctx == CONTEXT_USER)
context_tracking_user_enter();
}
}
Expand Down
6 changes: 3 additions & 3 deletions include/linux/context_tracking_state.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ struct context_tracking {
*/
bool active;
enum ctx_state {
IN_KERNEL = 0,
IN_USER,
CONTEXT_KERNEL = 0,
CONTEXT_USER,
} state;
};

Expand All @@ -34,7 +34,7 @@ static inline bool context_tracking_cpu_is_enabled(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
static inline bool context_tracking_in_user(void) { return false; }
Expand Down
8 changes: 4 additions & 4 deletions kernel/context_tracking.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ void context_tracking_user_enter(void)
WARN_ON_ONCE(!current->mm);

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)) {
trace_user_enter(0);
/*
Expand All @@ -101,7 +101,7 @@ void context_tracking_user_enter(void)
* OTOH we can spare the calls to vtime and RCU when context_tracking.active
* 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);
}
Expand Down Expand Up @@ -129,7 +129,7 @@ void context_tracking_user_exit(void)
return;

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)) {
/*
* We are going to run code that may use RCU. Inform
Expand All @@ -139,7 +139,7 @@ void context_tracking_user_exit(void)
vtime_user_exit(current);
trace_user_exit(0);
}
__this_cpu_write(context_tracking.state, IN_KERNEL);
__this_cpu_write(context_tracking.state, CONTEXT_KERNEL);
}
local_irq_restore(flags);
}
Expand Down
2 changes: 1 addition & 1 deletion kernel/sched/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2818,7 +2818,7 @@ asmlinkage __visible void __sched schedule_user(void)
* we find a better solution.
*
* 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.
*/
enum ctx_state prev_state = exception_enter();
Expand Down

0 comments on commit c467ea7

Please sign in to comment.