Patch "scsi: hisi_sas: Enable all PHYs that are not disabled by user during controller reset" has been added to the 6.12-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: hisi_sas: Enable all PHYs that are not disabled by user during controller reset

to the 6.12-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-hisi_sas-enable-all-phys-that-are-not-disabled-.patch
and it can be found in the queue-6.12 subdirectory.

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



commit aeda1fce074b0ddc69b240ae8a0059a08715ffff
Author: Yihang Li <liyihang9@xxxxxxxxxx>
Date:   Tue Oct 8 10:18:13 2024 +0800

    scsi: hisi_sas: Enable all PHYs that are not disabled by user during controller reset
    
    [ Upstream commit 08a07dc71d7fc6f58c35c4fc0bcede2811c5aa4c ]
    
    For the controller reset operation(such as FLR or clear nexus ha in SCSI
    EH), we will disable all PHYs and then enable PHY based on the
    hisi_hba->phy_state obtained in hisi_sas_controller_reset_prepare(). If
    the device is removed before controller reset or the PHY is not attached
    to any device in directly attached scenario, the corresponding bit of
    phy_state is not set. After controller reset done, the PHY is disabled.
    The device cannot be identified even if user reconnect the disk.
    
    Therefore, for PHYs that are not disabled by user, hisi_sas_phy_enable()
    needs to be executed even if the corresponding bit of phy_state is not
    set.
    
    Fixes: 89954f024c3a ("scsi: hisi_sas: Ensure all enabled PHYs up during controller reset")
    Signed-off-by: Yihang Li <liyihang9@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20241008021822.2617339-5-liyihang9@xxxxxxxxxx
    Reviewed-by: Xiang Chen <chenxiang66@xxxxxxxxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 6219807ce3b9e..ffd15fa4f9e59 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -1545,10 +1545,16 @@ void hisi_sas_controller_reset_done(struct hisi_hba *hisi_hba)
 	/* Init and wait for PHYs to come up and all libsas event finished. */
 	for (phy_no = 0; phy_no < hisi_hba->n_phy; phy_no++) {
 		struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
+		struct asd_sas_phy *sas_phy = &phy->sas_phy;
 
-		if (!(hisi_hba->phy_state & BIT(phy_no)))
+		if (!sas_phy->phy->enabled)
 			continue;
 
+		if (!(hisi_hba->phy_state & BIT(phy_no))) {
+			hisi_sas_phy_enable(hisi_hba, phy_no, 1);
+			continue;
+		}
+
 		async_schedule_domain(hisi_sas_async_init_wait_phyup,
 				      phy, &async);
 	}




[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