scsi: qla2xxx: Skip IRQ affinity for Target QPairs
authorQuinn Tran <quinn.tran@cavium.com>
Mon, 4 Dec 2017 22:44:59 +0000 (14:44 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 15 Mar 2018 09:54:25 +0000 (10:54 +0100)
commit d68b850e1bfb9afb24b888a946165a186a710195 upstream.

Fix co-existence between Block MQ and Target Mode. Block MQ and
initiator mode requires midlayer queue mapping to check for IRQ to be
affinitized. For target mode, it's not the case.

Fixes: 09620eeb62c41 ("scsi: qla2xxx: Add debug knob for user control workload")
Cc: <stable@vger.kernel.org> # 4.12+
Signed-off-by: Quinn Tran <quinn.tran@cavium.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/scsi/qla2xxx/qla_os.c

index 976b2601becbffc69d90e292beda76b8b3a460a7..a25fabb38cbff41bee9c9239e33b66c79b175406 100644 (file)
@@ -6592,9 +6592,14 @@ qla83xx_disable_laser(scsi_qla_host_t *vha)
 
 static int qla2xxx_map_queues(struct Scsi_Host *shost)
 {
+       int rc;
        scsi_qla_host_t *vha = (scsi_qla_host_t *)shost->hostdata;
 
-       return blk_mq_pci_map_queues(&shost->tag_set, vha->hw->pdev);
+       if (USER_CTRL_IRQ(vha->hw))
+               rc = blk_mq_map_queues(&shost->tag_set);
+       else
+               rc = blk_mq_pci_map_queues(&shost->tag_set, vha->hw->pdev);
+       return rc;
 }
 
 static const struct pci_error_handlers qla2xxx_err_handler = {