diff options
Diffstat (limited to 'kernel/sched/clock.c')
-rw-r--r-- | kernel/sched/clock.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/kernel/sched/clock.c b/kernel/sched/clock.c index e85a725e5c34..5d6dd38b449c 100644 --- a/kernel/sched/clock.c +++ b/kernel/sched/clock.c | |||
@@ -78,19 +78,17 @@ EXPORT_SYMBOL_GPL(sched_clock); | |||
78 | __read_mostly int sched_clock_running; | 78 | __read_mostly int sched_clock_running; |
79 | 79 | ||
80 | #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK | 80 | #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK |
81 | static struct static_key __sched_clock_stable = STATIC_KEY_INIT; | 81 | static DEFINE_STATIC_KEY_FALSE(__sched_clock_stable); |
82 | static int __sched_clock_stable_early; | 82 | static int __sched_clock_stable_early; |
83 | 83 | ||
84 | int sched_clock_stable(void) | 84 | int sched_clock_stable(void) |
85 | { | 85 | { |
86 | return static_key_false(&__sched_clock_stable); | 86 | return static_branch_likely(&__sched_clock_stable); |
87 | } | 87 | } |
88 | 88 | ||
89 | static void __set_sched_clock_stable(void) | 89 | static void __set_sched_clock_stable(void) |
90 | { | 90 | { |
91 | if (!sched_clock_stable()) | 91 | static_branch_enable(&__sched_clock_stable); |
92 | static_key_slow_inc(&__sched_clock_stable); | ||
93 | |||
94 | tick_dep_clear(TICK_DEP_BIT_CLOCK_UNSTABLE); | 92 | tick_dep_clear(TICK_DEP_BIT_CLOCK_UNSTABLE); |
95 | } | 93 | } |
96 | 94 | ||
@@ -109,9 +107,7 @@ void set_sched_clock_stable(void) | |||
109 | static void __clear_sched_clock_stable(struct work_struct *work) | 107 | static void __clear_sched_clock_stable(struct work_struct *work) |
110 | { | 108 | { |
111 | /* XXX worry about clock continuity */ | 109 | /* XXX worry about clock continuity */ |
112 | if (sched_clock_stable()) | 110 | static_branch_disable(&__sched_clock_stable); |
113 | static_key_slow_dec(&__sched_clock_stable); | ||
114 | |||
115 | tick_dep_set(TICK_DEP_BIT_CLOCK_UNSTABLE); | 111 | tick_dep_set(TICK_DEP_BIT_CLOCK_UNSTABLE); |
116 | } | 112 | } |
117 | 113 | ||