[PATCH v3 2/2] genirq/matrix: Avoid implicit tie-breaking by CPU iteration order
From: Zhan Xusheng
Date: Tue Jan 27 2026 - 22:14:34 EST
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@xxxxxxxxxx>
---
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