linux_dsm_epyc7002/drivers/scsi/lpfc
James Smart e8869f5b0a scsi: lpfc: Fix mailbox hang on adapter init
The adapter initialization sequence enables interrupts, initializes the
adapter link_state to LINK_DOWN, then issues commands to initialize the
adapter. The interrupt handler on the adapter validates the link_state (has
to be at least LINK_DOWN) and if invalid, will discard the interrupting
event.

In most cases, there is not a command completion, thus an interrupt until
the initialization commands have been sent which is post the setting of
state to LINK_DOWN.  However, in cases of firmware reset, the reset will
modify the link_state to an invalid value (indicating a reset of the
adapter) and there occasionally are cases where the adapter will generate
an asynchronous event which shares the eq/cq used for mailbox commands. In
the failure case, an interrupt is generated immediately after enabling them
due to the async event.  As link_state is invalid, the eq is list and the
CQ not serviced.  At this point link_state is initialized and the mailbox
command sent.  As the CQ has not been serviced, it is not armed, so no
interrupt event is generated when the mailbox command completes.

Modify the initialization sequence so that interrupts are enabled after
link_state is properly initialized, which avoids the race condition with
the async event.

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2019-03-19 13:15:08 -04:00
..
lpfc_attr.c scsi: lpfc: Coordinate adapter error handling with offline handling 2019-03-19 12:57:02 -04:00
lpfc_attr.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_bsg.c SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_bsg.h scsi: lpfc: add Trunking support 2018-11-06 20:42:51 -05:00
lpfc_compat.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_crtn.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_ct.c scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_debugfs.c scsi: lpfc: fix a handful of indentation issues 2019-02-13 22:15:42 -05:00
lpfc_debugfs.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_disc.h scsi: lpfc: Fix discovery failures during port failovers with lots of vports 2018-12-07 22:35:32 -05:00
lpfc_els.c scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_hbadisc.c scsi: lpfc: Fix SLI3 commands being issued on SLI4 devices 2019-03-19 12:57:02 -04:00
lpfc_hw4.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_hw.h Revert "scsi: lpfc: ls_rjt erroneus FLOGIs" 2018-12-12 20:26:56 -05:00
lpfc_ids.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_init.c scsi: lpfc: Coordinate adapter error handling with offline handling 2019-03-19 12:57:02 -04:00
lpfc_logmsg.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_mbox.c SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_mem.c scsi: lpfc: refactor mailbox structure context fields 2018-12-07 22:35:32 -05:00
lpfc_nl.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc_nportdisc.c scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_nvme.c SCSI misc on 20190315 2019-03-16 12:51:50 -07:00
lpfc_nvme.h SCSI misc on 20190306 2019-03-09 16:53:47 -08:00
lpfc_nvmet.c scsi: lpfc: Correct localport timeout duration error 2019-03-19 13:15:08 -04:00
lpfc_nvmet.h scsi: lpfc: Correct localport timeout duration error 2019-03-19 13:15:08 -04:00
lpfc_scsi.c scsi: lpfc: Fix driver crash in target reset handler 2019-03-19 13:15:08 -04:00
lpfc_scsi.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli4.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_sli.c scsi: lpfc: Fix mailbox hang on adapter init 2019-03-19 13:15:08 -04:00
lpfc_sli.h scsi: lpfc: Coordinate adapter error handling with offline handling 2019-03-19 12:57:02 -04:00
lpfc_version.h scsi: lpfc: Update lpfc version to 12.2.0.0 2019-02-05 22:29:50 -05:00
lpfc_vport.c scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
lpfc_vport.h scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00
lpfc.h scsi: lpfc: Update 12.2.0.0 file copyrights to 2019 2019-02-05 22:29:50 -05:00
Makefile scsi: lpfc: Revise copyright for new company language 2018-07-10 22:15:09 -04:00