]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/fair: Add READ_ONCE() and use existing helper function to access ->avg_irq
authorShrikanth Hegde <sshegde@linux.vnet.ibm.com>
Mon, 1 Jan 2024 15:46:24 +0000 (21:16 +0530)
committerIngo Molnar <mingo@kernel.org>
Wed, 28 Feb 2024 14:11:15 +0000 (15:11 +0100)
Use existing helper function cpu_util_irq() instead of open-coding
access to ->avg_irq.

During review it was noted that ->avg_irq could be updated by a
different CPU than the one which is trying to access it.

->avg_irq is updated with WRITE_ONCE(), use READ_ONCE to access it
in order to avoid any compiler optimizations.

Signed-off-by: Shrikanth Hegde <sshegde@linux.vnet.ibm.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
Link: https://lore.kernel.org/r/20240101154624.100981-3-sshegde@linux.vnet.ibm.com
kernel/sched/fair.c
kernel/sched/sched.h

index 127e727fb7b4902b187e65c48e24c497317d7b37..ba3633940f6fc470272790349944385739e71c4a 100644 (file)
@@ -9246,10 +9246,8 @@ static inline bool others_have_blocked(struct rq *rq)
        if (thermal_load_avg(rq))
                return true;
 
-#ifdef CONFIG_HAVE_SCHED_AVG_IRQ
-       if (READ_ONCE(rq->avg_irq.util_avg))
+       if (cpu_util_irq(rq))
                return true;
-#endif
 
        return false;
 }
index 001fe047bd5d80b841776719b5fa73f4401288a4..d2242679239ec5ad49152400350882d7d7b9819c 100644 (file)
@@ -3136,7 +3136,7 @@ static inline bool uclamp_rq_is_idle(struct rq *rq)
 #ifdef CONFIG_HAVE_SCHED_AVG_IRQ
 static inline unsigned long cpu_util_irq(struct rq *rq)
 {
-       return rq->avg_irq.util_avg;
+       return READ_ONCE(rq->avg_irq.util_avg);
 }
 
 static inline