]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched: Use hrtimer_highres_enabled()
authorThomas Gleixner <tglx@kernel.org>
Tue, 24 Feb 2026 16:35:47 +0000 (17:35 +0100)
committerPeter Zijlstra <peterz@infradead.org>
Fri, 27 Feb 2026 15:40:05 +0000 (16:40 +0100)
Use the static branch based variant and thereby avoid following three
pointers.

Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://patch.msgid.link/20260224163429.203610956@kernel.org
include/linux/hrtimer.h
kernel/sched/sched.h

index c9ca105ba009256669e7b2f6544aa18260554277..b5003856fd60b97a6717ac60237cb5ae03942423 100644 (file)
@@ -146,12 +146,6 @@ static inline ktime_t hrtimer_expires_remaining(const struct hrtimer *timer)
        return ktime_sub(timer->node.expires, hrtimer_cb_get_time(timer));
 }
 
-static inline int hrtimer_is_hres_active(struct hrtimer *timer)
-{
-       return IS_ENABLED(CONFIG_HIGH_RES_TIMERS) ?
-               timer->base->cpu_base->hres_active : 0;
-}
-
 #ifdef CONFIG_HIGH_RES_TIMERS
 extern unsigned int hrtimer_resolution;
 struct clock_event_device;
index 73bc20c47631d2f046a6ba2983e2c22c63c90be1..0aa089dfaaa4bc4ef5361980f9677417584b8a11 100644 (file)
@@ -3019,25 +3019,19 @@ extern unsigned int sysctl_numa_balancing_hot_threshold;
  *  - enabled by features
  *  - hrtimer is actually high res
  */
-static inline int hrtick_enabled(struct rq *rq)
+static inline bool hrtick_enabled(struct rq *rq)
 {
-       if (!cpu_active(cpu_of(rq)))
-               return 0;
-       return hrtimer_is_hres_active(&rq->hrtick_timer);
+       return cpu_active(cpu_of(rq)) && hrtimer_highres_enabled();
 }
 
-static inline int hrtick_enabled_fair(struct rq *rq)
+static inline bool hrtick_enabled_fair(struct rq *rq)
 {
-       if (!sched_feat(HRTICK))
-               return 0;
-       return hrtick_enabled(rq);
+       return sched_feat(HRTICK) && hrtick_enabled(rq);
 }
 
-static inline int hrtick_enabled_dl(struct rq *rq)
+static inline bool hrtick_enabled_dl(struct rq *rq)
 {
-       if (!sched_feat(HRTICK_DL))
-               return 0;
-       return hrtick_enabled(rq);
+       return sched_feat(HRTICK_DL) && hrtick_enabled(rq);
 }
 
 extern void hrtick_start(struct rq *rq, u64 delay);
@@ -3047,22 +3041,9 @@ static inline bool hrtick_active(struct rq *rq)
 }
 
 #else /* !CONFIG_SCHED_HRTICK: */
-
-static inline int hrtick_enabled_fair(struct rq *rq)
-{
-       return 0;
-}
-
-static inline int hrtick_enabled_dl(struct rq *rq)
-{
-       return 0;
-}
-
-static inline int hrtick_enabled(struct rq *rq)
-{
-       return 0;
-}
-
+static inline bool hrtick_enabled_fair(struct rq *rq) { return false; }
+static inline bool hrtick_enabled_dl(struct rq *rq) { return false; }
+static inline bool hrtick_enabled(struct rq *rq) { return false; }
 #endif /* !CONFIG_SCHED_HRTICK */
 
 #ifndef arch_scale_freq_tick