Patch "scsi: lpfc: Fix queue failures when recovering from PCI parity error" has been added to the 5.17-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: lpfc: Fix queue failures when recovering from PCI parity error

to the 5.17-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-lpfc-fix-queue-failures-when-recovering-from-pc.patch
and it can be found in the queue-5.17 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit c2f2e8a8fc63afb8949508b6194b50134654651b
Author: James Smart <jsmart2021@xxxxxxxxx>
Date:   Wed Mar 16 20:27:36 2022 -0700

    scsi: lpfc: Fix queue failures when recovering from PCI parity error
    
    [ Upstream commit df0101197c4d9596682901631f3ee193ed354873 ]
    
    When recovering from a pci-parity error the driver is failing to re-create
    queues, causing recovery to fail. Looking deeper, it was found that the
    interrupt vector count allocated on the recovery was fewer than the vectors
    originally allocated. This disparity resulted in CPU map entries with stale
    information. When the driver tries to re-create the queues, it attempts to
    use the stale information which indicates an eq/interrupt vector that was
    no longer created.
    
    Fix by clearng the cpup map array before enabling and requesting the IRQs
    in the lpfc_sli_reset_slot_s4 routine().
    
    Link: https://lore.kernel.org/r/20220317032737.45308-4-jsmart2021@xxxxxxxxx
    Co-developed-by: Justin Tee <justin.tee@xxxxxxxxxxxx>
    Signed-off-by: Justin Tee <justin.tee@xxxxxxxxxxxx>
    Signed-off-by: James Smart <jsmart2021@xxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index c8c049cf8d96..9569a7390f9d 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -15248,6 +15248,8 @@ lpfc_io_slot_reset_s4(struct pci_dev *pdev)
 	psli->sli_flag &= ~LPFC_SLI_ACTIVE;
 	spin_unlock_irq(&phba->hbalock);
 
+	/* Init cpu_map array */
+	lpfc_cpu_map_array_init(phba);
 	/* Configure and enable interrupt */
 	intr_mode = lpfc_sli4_enable_intr(phba, phba->intr_mode);
 	if (intr_mode == LPFC_INTR_ERROR) {



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux