Messages in this thread | | | From | "Derrick, Jonathan" <> | Subject | Re: [PATCH V3 1/3] genirq/affinity: Enhance warning check | Date | Tue, 13 Aug 2019 19:31:39 +0000 |
| |
Hi Ming,
On Tue, 2019-08-13 at 16:14 +0800, Ming Lei wrote: > 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 <hch@lst.de> > Cc: Keith Busch <kbusch@kernel.org> > Cc: linux-nvme@lists.infradead.org, > Cc: Jon Derrick <jonathan.derrick@intel.com> > Cc: Jens Axboe <axboe@kernel.dk> > Fixes: 6da4b3ab9a6 ("genirq/affinity: Add support for allocating interrupt sets") > Signed-off-by: Ming Lei <ming.lei@redhat.com> > --- > 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);
I think the patch description assumes the first condition "The two-stage spread is done on same irq vectors"
/* * Spread on non present CPUs starting from the next vector to be * handled. If the spreading of present CPUs already exhausted the * vector space, assign the non present CPUs to the already spread * out vectors. */ if (nr_present >= numvecs) curvec = firstvec;
But doesn't following condition imply nr_others spread is potentionally different vector set?
else curvec = firstvec + nr_present;
> > free_node_to_cpumask(node_to_cpumask); > [unhandled content-type:application/x-pkcs7-signature] | |