On Fri, Apr 09, 2021 at 09:36:45AM +0200, Daniel Wagner wrote:
On Fri, Apr 09, 2021 at 09:17:59AM +0300, Roman Bolshakov wrote:
drivers/scsi/qla2xxx/qla_isr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/qla2xxx/qla_isr.c b/drivers/scsi/qla2xxx/qla_isr.c index 11d6e0db07fe..6641978dfecf 100644 --- a/drivers/scsi/qla2xxx/qla_isr.c +++ b/drivers/scsi/qla2xxx/qla_isr.c @@ -3998,12 +3998,10 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp) if (USER_CTRL_IRQ(ha) || !ha->mqiobase) { /* user wants to control IRQ setting for target mode */ ret = pci_alloc_irq_vectors(ha->pdev, min_vecs,
min((u16)ha->msix_count, (u16)num_online_cpus()),
PCI_IRQ_MSIX);
} else ret = pci_alloc_irq_vectors_affinity(ha->pdev, min_vecs,ha->msix_count, PCI_IRQ_MSIX);
min((u16)ha->msix_count, (u16)num_online_cpus()),
PCI_IRQ_MSIX | PCI_IRQ_AFFINITY,
&desc);ha->msix_count, PCI_IRQ_MSIX | PCI_IRQ_AFFINITY,
Commit message a6dcfe08487e ("scsi: qla2xxx: Limit interrupt vectors to number of CPUs") says
Driver created too many QPairs(126) with 28xx adapter. Limit to the number of CPUs to minimize wasted resources.
I think a simple revert is not taking the resource wasting into account. Maybe the min vector calculation just needs a higher lower bound. So something stupid like
min(msix_cound, num_online_cpus() > 2? num_online_cpus() : 3)
?
Hi Daniel,
That would reduce number of Queue Pairs on small-core systems, e.g. 14 HW queues are going to be available on 16-CPU system, even if the HBA has enough MSI-X vectors for 16 HW queues.
But... min((u16)ha->msix_count, (u16)num_online_cpus() + 3) might actually do the trick... I'll try that.
Thanks, Roman