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

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
...@@ -2732,7 +2732,7 @@ struct isp_operations { ...@@ -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(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_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_MSIX_RSP_Q 0x01
#define QLA_ATIO_VECTOR 0x02 #define QLA_ATIO_VECTOR 0x02
#define QLA_MSIX_QPAIR_MULTIQ_RSP_Q 0x03 #define QLA_MSIX_QPAIR_MULTIQ_RSP_Q 0x03
......
...@@ -3017,13 +3017,20 @@ static struct qla_init_msix_entry qla82xx_msix_entries[] = { ...@@ -3017,13 +3017,20 @@ static struct qla_init_msix_entry qla82xx_msix_entries[] = {
static int static int
qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp) qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
{ {
#define MIN_MSIX_COUNT 2
int i, ret; int i, ret;
struct qla_msix_entry *qentry; struct qla_msix_entry *qentry;
scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); 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) { if (ret < 0) {
ql_log(ql_log_fatal, vha, 0x00c7, ql_log(ql_log_fatal, vha, 0x00c7,
"MSI-X: Failed to enable support, " "MSI-X: Failed to enable support, "
...@@ -3074,7 +3081,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp) ...@@ -3074,7 +3081,7 @@ qla24xx_enable_msix(struct qla_hw_data *ha, struct rsp_que *rsp)
} }
/* Enable MSI-X vectors for the base queue */ /* 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 = &ha->msix_entries[i];
qentry->handle = rsp; qentry->handle = rsp;
rsp->msix = qentry; rsp->msix = qentry;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment