Message ID | 1651839939-101188-1-git-send-email-john.garry@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | scsi: hisi_sas: Undo RPM resume for failed notify phy event for v3 HW | expand |
John, > If we fail to notify the phy up event then undo the RPM resume, as the > phy up notify event handling pairs with that RPM resume. Applied to 5.19/scsi-staging, thanks!
On Fri, 6 May 2022 20:25:39 +0800, John Garry wrote: > From: Xiang Chen <chenxiang66@hisilicon.com> > > If we fail to notify the phy up event then undo the RPM resume, as the > phy up notify event handling pairs with that RPM resume. > > Applied to 5.19/scsi-queue, thanks! [1/1] scsi: hisi_sas: Undo RPM resume for failed notify phy event for v3 HW https://git.kernel.org/mkp/scsi/c/9b5387fe5af3
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c index 79f87d7c3e68..7d819fc0395e 100644 --- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c +++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c @@ -1563,9 +1563,15 @@ static irqreturn_t phy_up_v3_hw(int phy_no, struct hisi_hba *hisi_hba) phy->port_id = port_id; - /* Call pm_runtime_put_sync() with pairs in hisi_sas_phyup_pm_work() */ + /* + * Call pm_runtime_get_noresume() which pairs with + * hisi_sas_phyup_pm_work() -> pm_runtime_put_sync(). + * For failure call pm_runtime_put() as we are in a hardirq context. + */ pm_runtime_get_noresume(dev); - hisi_sas_notify_phy_event(phy, HISI_PHYE_PHY_UP_PM); + res = hisi_sas_notify_phy_event(phy, HISI_PHYE_PHY_UP_PM); + if (!res) + pm_runtime_put(dev); res = IRQ_HANDLED;