]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
lpfc: Fix crash after firmware flash when
authorJames Smart <james.smart@broadcom.com>
Wed, 12 Jul 2017 22:53:16 +0000 (18:53 -0400)
committerChuck Anderson <chuck.anderson@oracle.com>
Fri, 14 Jul 2017 00:14:28 +0000 (17:14 -0700)
[backport of e9e6003bdcfec67c719c8e335fa5bff65c707297]
From: rkennedy <dick.kennedy@avagotech.com>

Orabug: 26439257

OS crashes after the completion of firmware download.

Failure in posting SCSI SGL buffers because number of SGL buffers is
less than total count. Some of the pending IOs are not completed by
driver. SGL buffers for these IOs are not added back to the list.
Pending IOs are not completed because lpfc_wq_list list is initialized
before completion of pending IOs.

Postpone lpfc_wq_list reinitialization by moving
lpfc_sli4_queue_destroy() after lpfc_hba_down_post().

Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
Signed-off-by: James Smart <james.smart@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/scsi/lpfc/lpfc_sli.c

index b25dad6835cb1ad8cb2b4f4f956eca6fe4522f5e..7ae81b333d813e674770efd7af74c01503a9f2a5 100644 (file)
@@ -4115,7 +4115,6 @@ lpfc_sli4_brdreset(struct lpfc_hba *phba)
 
        /* Perform FCoE PCI function reset before freeing queue memory */
        rc = lpfc_pci_function_reset(phba);
-       lpfc_sli4_queue_destroy(phba);
 
        /* Restore PCI cmd register */
        pci_write_config_word(phba->pcidev, PCI_COMMAND, cfg_value);
@@ -4240,6 +4239,7 @@ lpfc_sli_brdrestart_s4(struct lpfc_hba *phba)
                pci_disable_pcie_error_reporting(phba->pcidev);
 
        lpfc_hba_down_post(phba);
+       lpfc_sli4_queue_destroy(phba);
 
        return rc;
 }