Commit a6965b31 authored by Shrikanth Hegde's avatar Shrikanth Hegde Committed by Ingo Molnar
Browse files

sched/fair: Add READ_ONCE() and use existing helper function to access ->avg_irq



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: default avatarShrikanth Hegde <sshegde@linux.vnet.ibm.com>
Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
Reviewed-by: default avatarVincent Guittot <vincent.guittot@linaro.org>
Link: https://lore.kernel.org/r/20240101154624.100981-3-sshegde@linux.vnet.ibm.com
parent 8b936fc1
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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