mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
blk-mq-pci: add a fallback when pci_irq_get_affinity returns NULL
While pci_irq_get_affinity should never fail for SMP kernel that implement the affinity mapping, it will always return NULL in the UP case, so provide a fallback mapping of all queues to CPU 0 in that case. Signed-off-by: Christoph Hellwig <hch@lst.de> Cc: stable@vger.kernel.org Reviewed-by: Omar Sandoval <osandov@fb.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
6caa0503c4
commit
c005390374
1 changed files with 7 additions and 1 deletions
|
@ -36,12 +36,18 @@ int blk_mq_pci_map_queues(struct blk_mq_tag_set *set, struct pci_dev *pdev)
|
||||||
for (queue = 0; queue < set->nr_hw_queues; queue++) {
|
for (queue = 0; queue < set->nr_hw_queues; queue++) {
|
||||||
mask = pci_irq_get_affinity(pdev, queue);
|
mask = pci_irq_get_affinity(pdev, queue);
|
||||||
if (!mask)
|
if (!mask)
|
||||||
return -EINVAL;
|
goto fallback;
|
||||||
|
|
||||||
for_each_cpu(cpu, mask)
|
for_each_cpu(cpu, mask)
|
||||||
set->mq_map[cpu] = queue;
|
set->mq_map[cpu] = queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
fallback:
|
||||||
|
WARN_ON_ONCE(set->nr_hw_queues > 1);
|
||||||
|
for_each_possible_cpu(cpu)
|
||||||
|
set->mq_map[cpu] = 0;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(blk_mq_pci_map_queues);
|
EXPORT_SYMBOL_GPL(blk_mq_pci_map_queues);
|
||||||
|
|
Loading…
Add table
Reference in a new issue