cpumask_copy(npresmsk, cpu_present_mask);
/* Spread on present CPUs starting from affd->pre_vectors */
- ret = __irq_build_affinity_masks(curvec, numvecs, firstvec,
- node_to_cpumask, cpu_present_mask,
- nmsk, masks);
- if (ret < 0)
- goto fail_build_affinity;
- nr_present = ret;
+ while (nr_present < numvecs) {
+ curvec = firstvec + nr_present;
+ ret = __irq_build_affinity_masks(curvec, numvecs, firstvec,
+ node_to_cpumask, npresmsk,
+ nmsk, masks);
+ if (ret < 0)
+ goto fail_build_affinity;
+ if (!ret)
+ break;
+ nr_present += ret;
+ }
/*
* Spread on non present CPUs starting from the next vector to be