]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
sched/fair: Small cleanup to update_newidle_cost()
authorPeter Zijlstra <peterz@infradead.org>
Wed, 3 Dec 2025 11:25:51 +0000 (11:25 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Jan 2026 14:19:26 +0000 (15:19 +0100)
commit 08d473dd8718e4a4d698b1113a14a40ad64a909b upstream.

Simplify code by adding a few variables.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Chris Mason <clm@meta.com>
Link: https://patch.msgid.link/20251107161739.655208666@infradead.org
[ Ajay: Modified to apply on v6.1 ]
Signed-off-by: Ajay Kaher <ajay.kaher@broadcom.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/sched/fair.c

index 9a7aa83ca61cc3c3eec90f5dce9db51652fd9a6a..2f296e2af5e4ad6d777dfbb53f674fc39da9f361 100644 (file)
@@ -10937,22 +10937,25 @@ void update_max_interval(void)
 
 static inline bool update_newidle_cost(struct sched_domain *sd, u64 cost)
 {
+       unsigned long next_decay = sd->last_decay_max_lb_cost + HZ;
+       unsigned long now = jiffies;
+
        if (cost > sd->max_newidle_lb_cost) {
                /*
                 * Track max cost of a domain to make sure to not delay the
                 * next wakeup on the CPU.
                 */
                sd->max_newidle_lb_cost = cost;
-               sd->last_decay_max_lb_cost = jiffies;
-       } else if (time_after(jiffies, sd->last_decay_max_lb_cost + HZ)) {
+               sd->last_decay_max_lb_cost = now;
+
+       } else if (time_after(now, next_decay)) {
                /*
                 * Decay the newidle max times by ~1% per second to ensure that
                 * it is not outdated and the current max cost is actually
                 * shorter.
                 */
                sd->max_newidle_lb_cost = (sd->max_newidle_lb_cost * 253) / 256;
-               sd->last_decay_max_lb_cost = jiffies;
-
+               sd->last_decay_max_lb_cost = now;
                return true;
        }