linux/drivers/scsi/lpfc
Dick Kennedy 66d7ce93a0 scsi: lpfc: Fix MRQ > 1 context list handling
Various oops including cpu LOCKUPs were seen.

For asynchronously received ius where the driver must assign exchange
resources, the resources were on a single get (free) list and put list
(finished, waiting to be put on get list). As all cpus are sharing the
lists, an interrupt for a receive frame may have to wait for all the
other cpus to place their done work onto the put list before it can
acquire the lock to pull from the list.

Fix by breaking the resource lists into per-cpu lists or at least more
than 1 list with cpu's sharing the lists). A cpu would allocate from the
free list for its own cpu, and put its done work on the its own put list
- avoiding the contention. As cpu load may vary, when empty, a cpu may
grab from another cpu, thereby changing resource distribution.  But
searching for a resource only occurs on 1 or a few cpus until a single
resource can be allocated. if the condition reoccurs, it starts looking
at a different cpu.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2017-08-24 22:29:41 -04:00
..
lpfc_attr.c scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_attr.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_bsg.c scsi: lpfc: remove useless code in lpfc_sli4_bsg_link_diag_test 2017-08-24 22:29:09 -04:00
lpfc_bsg.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_compat.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_crtn.h scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_ct.c scsi: lpfc: convert info messages to standard messages 2017-08-24 22:29:36 -04:00
lpfc_debugfs.c scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_debugfs.h scsi: lpfc: fix building without debugfs support 2017-03-23 11:28:43 -04:00
lpfc_disc.h scsi: lpfc: Fix handling of FCP and NVME FC4 types in Pt2Pt topology 2017-08-24 22:29:37 -04:00
lpfc_els.c scsi: lpfc: Correct issues with FAWWN and FDISCs 2017-08-24 22:29:39 -04:00
lpfc_hbadisc.c scsi: lpfc: Fix SLI3 drivers attempting NVME ELS commands. 2017-06-19 21:40:21 -04:00
lpfc_hw4.h scsi: lpfc: Add auto EQ delay logic 2017-06-12 21:37:31 -04:00
lpfc_hw.h Add Fabric assigned WWN support. 2017-04-24 09:25:49 +02:00
lpfc_ids.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_init.c scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_logmsg.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_mbox.c Update ABORT processing for NVMET. 2017-04-24 09:25:49 +02:00
lpfc_mem.c scsi: lpfc: Replace PCI pool old API 2017-08-07 14:04:01 -04:00
lpfc_nl.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_nportdisc.c scsi: lpfc: Fix handling of FCP and NVME FC4 types in Pt2Pt topology 2017-08-24 22:29:37 -04:00
lpfc_nvme.c scsi: lpfc: Correct return error codes to align with nvme_fc transport 2017-08-24 22:29:37 -04:00
lpfc_nvme.h scsi: lpfc: Fix transition nvme-i rport handling to nport only. 2017-06-12 21:37:30 -04:00
lpfc_nvmet.c scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_nvmet.h scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_scsi.c scsi: lpfc: Replace PCI pool old API 2017-08-07 14:04:01 -04:00
lpfc_scsi.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc_sli4.h scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_sli.c scsi: lpfc: Fix MRQ > 1 context list handling 2017-08-24 22:29:41 -04:00
lpfc_sli.h scsi: lpfc: Add auto EQ delay logic 2017-06-12 21:37:31 -04:00
lpfc_version.h scsi: lpfc: update to revision to 11.4.0.1 2017-06-19 21:41:12 -04:00
lpfc_vport.c Fix crash after issuing lip reset 2017-04-24 09:25:49 +02:00
lpfc_vport.h scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00
lpfc.h scsi: lpfc: Replace PCI pool old API 2017-08-07 14:04:01 -04:00
Makefile scsi: lpfc: Update copyrights 2017-02-22 18:41:44 -05:00