matrix_find_best_cpu_managed() updates best_cpu even when two CPUs
have the same managed_allocated count. As a result, the final
selection implicitly depends on CPU iteration order.
Update the comparison to replace the current best CPU only when a
CPU has a strictly smaller managed_allocated value. This removes
the iteration-order-based tie-breaking for equal cases.
This patch intentionally changes the selection behavior.
Signed-off-by: Zhan Xusheng <zhanxusheng@xiaomi.com>
---
kernel/irq/matrix.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/irq/matrix.c b/kernel/irq/matrix.c
index c363e918087c..ed4b1e44dc1e 100644
--- a/kernel/irq/matrix.c
+++ b/kernel/irq/matrix.c
@@ -171,7 +171,7 @@ static unsigned int matrix_find_best_cpu_managed(struct irq_matrix *m,
if (!cm->online)
continue;
- if (cm->managed_allocated <= allocated) {
+ if (cm->managed_allocated < allocated) {
best_cpu = cpu;
allocated = cm->managed_allocated;
}
--
2.43.0