scsi: hisi_sas: Do not reset phy timer to wait for stray phy up
We found out that after phy up, the hardware reports another oob interrupt but did not follow a phy up interrupt: oob ready -> phy up -> DEV found -> oob read -> wait phy up -> timeout We run link reset when wait phy up timeout, and it send a normal disk into reset processing. So we made some circumvention action in the code, so that this abnormal oob interrupt will not start the timer to wait for phy up. Link: https://lore.kernel.org/r/1589552025-165012-2-git-send-email-john.garry@huawei.com Signed-off-by: Luo Jiaxing <luojiaxing@huawei.com> Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
c5f8852273
commit
e16b9ed61e
@ -898,8 +898,11 @@ void hisi_sas_phy_oob_ready(struct hisi_hba *hisi_hba, int phy_no)
|
||||
struct hisi_sas_phy *phy = &hisi_hba->phy[phy_no];
|
||||
struct device *dev = hisi_hba->dev;
|
||||
|
||||
dev_dbg(dev, "phy%d OOB ready\n", phy_no);
|
||||
if (phy->phy_attached)
|
||||
return;
|
||||
|
||||
if (!timer_pending(&phy->timer)) {
|
||||
dev_dbg(dev, "phy%d OOB ready\n", phy_no);
|
||||
phy->timer.expires = jiffies + HISI_SAS_WAIT_PHYUP_TIMEOUT * HZ;
|
||||
add_timer(&phy->timer);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user