Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 17e5fc58 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Martin K. Petersen
Browse files

scsi: qla2xxx: fix MSI-X vector affinity



The first two or three vectors in qla2xxx adapter are global and not
associated with a specific queue.  They should not have IRQ affinity
assigned.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarHimanshu Madhani <himanshu.madhani@cavium.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent c3c42394
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2732,7 +2732,7 @@ struct isp_operations {
#define QLA_MSIX_FW_MODE(m)	(((m) & (BIT_7|BIT_8|BIT_9)) >> 7)
#define QLA_MSIX_FW_MODE_1(m)	(QLA_MSIX_FW_MODE(m) == 1)

#define QLA_MSIX_DEFAULT		0x00
#define QLA_BASE_VECTORS	2 /* default + RSP */
#define QLA_MSIX_RSP_Q			0x01
#define QLA_ATIO_VECTOR		0x02
#define QLA_MSIX_QPAIR_MULTIQ_RSP_Q	0x03
+11 −4
Original line number Diff line number Diff line
@@ -3017,13 +3017,20 @@ static struct qla_init_msix_entry qla82xx_msix_entries[] = {
static int
qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
{
#define MIN_MSIX_COUNT	2
	int i, ret;
	struct qla_msix_entry *qentry;
	scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
	struct irq_affinity desc = {
		.pre_vectors = QLA_BASE_VECTORS,
	};

	if (QLA_TGT_MODE_ENABLED() && IS_ATIO_MSIX_CAPABLE(ha))
		desc.pre_vectors++;

	ret = pci_alloc_irq_vectors_affinity(ha->pdev, QLA_BASE_VECTORS,
			ha->msix_count, PCI_IRQ_MSIX | PCI_IRQ_AFFINITY,
			&desc);

	ret = pci_alloc_irq_vectors(ha->pdev, MIN_MSIX_COUNT, ha->msix_count,
				    PCI_IRQ_MSIX | PCI_IRQ_AFFINITY);
	if (ret < 0) {
		ql_log(ql_log_fatal, vha, 0x00c7,
		    "MSI-X: Failed to enable support, "
@@ -3074,7 +3081,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
	}

	/* Enable MSI-X vectors for the base queue */
	for (i = 0; i < (QLA_MSIX_RSP_Q + 1); i++) {
	for (i = 0; i < QLA_BASE_VECTORS; i++) {
		qentry = &ha->msix_entries[i];
		qentry->handle = rsp;
		rsp->msix = qentry;