[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