The two-stage spread is done on same irq vectors, and we just need that
either one stage covers all vector, not two stage work together to cover
all vectors.

So enhance the warning check to make sure all vectors are spread.

Cc: Christoph Hellwig <[email protected]>
Cc: Keith Busch <[email protected]>
Cc: [email protected],
Cc: Jon Derrick <[email protected]>
Cc: Jens Axboe <[email protected]>
Fixes: 6da4b3ab9a6 ("genirq/affinity: Add support for allocating interrupt 
sets")
Signed-off-by: Ming Lei <[email protected]>
---
 kernel/irq/affinity.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c
index 6fef48033f96..265b3076f16b 100644
--- a/kernel/irq/affinity.c
+++ b/kernel/irq/affinity.c
@@ -215,8 +215,7 @@ static int irq_build_affinity_masks(unsigned int startvec, 
unsigned int numvecs,
                                               npresmsk, nmsk, masks);
        put_online_cpus();
 
-       if (nr_present < numvecs)
-               WARN_ON(nr_present + nr_others < numvecs);
+       WARN_ON(max(nr_present, nr_others) < numvecs);
 
        free_node_to_cpumask(node_to_cpumask);
 
-- 
2.20.1

Reply via email to