[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260128031406.9473-2-zhanxusheng@xiaomi.com>
Date: Wed, 28 Jan 2026 11:14:05 +0800
From: Zhan Xusheng <zhanxusheng1024@...il.com>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: linux-kernel@...r.kernel.org,
linux-irq@...r.kernel.org,
Zhan Xusheng <zhanxusheng@...omi.com>
Subject: [PATCH v3 1/2] genirq/matrix: Clarify CPU selection logic
The CPU selection loops in matrix_find_best_cpu() and
matrix_find_best_cpu_managed() mix the online check with the
comparison that determines whether a CPU becomes the current
best candidate.
Restructure the loops to filter out offline CPUs first and then
perform the comparison separately. This makes the selection
criteria easier to read and reason about.
No functional change intended.
Signed-off-by: Zhan Xusheng <zhanxusheng@...omi.com>
---
kernel/irq/matrix.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/kernel/irq/matrix.c b/kernel/irq/matrix.c
index a50f2305a8dc..c363e918087c 100644
--- a/kernel/irq/matrix.c
+++ b/kernel/irq/matrix.c
@@ -140,14 +140,17 @@ static unsigned int matrix_find_best_cpu(struct irq_matrix *m,
best_cpu = UINT_MAX;
+ /* Select the online CPU with the most available vectors */
for_each_cpu(cpu, msk) {
cm = per_cpu_ptr(m->maps, cpu);
- if (!cm->online || cm->available <= maxavl)
+ if (!cm->online)
continue;
- best_cpu = cpu;
- maxavl = cm->available;
+ if (cm->available > maxavl) {
+ best_cpu = cpu;
+ maxavl = cm->available;
+ }
}
return best_cpu;
}
@@ -161,14 +164,17 @@ static unsigned int matrix_find_best_cpu_managed(struct irq_matrix *m,
best_cpu = UINT_MAX;
+ /* Select the online CPU with the fewest managed allocated vectors */
for_each_cpu(cpu, msk) {
cm = per_cpu_ptr(m->maps, cpu);
- if (!cm->online || cm->managed_allocated > allocated)
+ if (!cm->online)
continue;
- best_cpu = cpu;
- allocated = cm->managed_allocated;
+ if (cm->managed_allocated <= allocated) {
+ best_cpu = cpu;
+ allocated = cm->managed_allocated;
+ }
}
return best_cpu;
}
--
2.43.0
Powered by blists - more mailing lists