History

context_tracking: Check static key on context_tracking_enabled_*cpu()

guest_enter() doesn't call context_tracking_enabled() before calling context_tracking_enabled_this_cpu(). Therefore the guest code doesn't benefit from the static key on the fast path. Just make sure that context_tracking_enabled_*cpu() functions check the static key by themselves to propagate the optimization.

Frederic Weisbecker committed 7 years ago

Commit 023e9de1 parent 9adbb9d2 files · +4 −4Browse files

Unified · Split

2 files
  1. include/linux/context_tracking_state.h +2 −2
  2. include/linux/vtime.h +2 −2
include/linux/context_tracking_state.h+2−2
@@ -33,12 +33,12 @@ static inline bool context_tracking_enabled(void) · 32 unmodified lines
33 33
34static inline bool context_tracking_enabled_cpu(int cpu)34static inline bool context_tracking_enabled_cpu(int cpu)
35{35{
36 return per_cpu(context_tracking.active, cpu);36 return context_tracking_enabled() && per_cpu(context_tracking.active, cpu);
37}37}
38 38
39static inline bool context_tracking_enabled_this_cpu(void)39static inline bool context_tracking_enabled_this_cpu(void)
40{40{
41 return __this_cpu_read(context_tracking.active);41 return context_tracking_enabled() && __this_cpu_read(context_tracking.active);
42}42}
43 43
44static inline bool context_tracking_in_user(void)44static inline bool context_tracking_in_user(void)
include/linux/vtime.h+2−2
@@ -33,12 +33,12 @@ static inline bool vtime_accounting_enabled(void) · 32 unmodified lines
33 33
34static inline bool vtime_accounting_enabled_cpu(int cpu)34static inline bool vtime_accounting_enabled_cpu(int cpu)
35{35{
36 return (vtime_accounting_enabled() && context_tracking_enabled_cpu(cpu));36 return context_tracking_enabled_cpu(cpu);
37}37}
38 38
39static inline bool vtime_accounting_enabled_this_cpu(void)39static inline bool vtime_accounting_enabled_this_cpu(void)
40{40{
41 return (vtime_accounting_enabled() && context_tracking_enabled_this_cpu());41 return context_tracking_enabled_this_cpu();
42}42}
43 43
44extern void vtime_task_switch_generic(struct task_struct *prev);44extern void vtime_task_switch_generic(struct task_struct *prev);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t