| From cbf2cc1400ab755bc946cab4c738b99653f8a329 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 29 Sep 2020 23:22:02 +0530 |
| Subject: bus: mhi: core: Abort suspends due to outgoing pending packets |
| |
| From: Bhaumik Bhatt <bbhatt@codeaurora.org> |
| |
| [ Upstream commit 515847c557dd33167be86cb429fc0674a331bc88 ] |
| |
| Add the missing check to abort suspends if a client driver has pending |
| outgoing packets to send to the device. This allows better utilization |
| of the MHI bus wherein clients on the host are not left waiting for |
| longer suspend or resume cycles to finish for data transfers. |
| |
| Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> |
| Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> |
| Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> |
| Link: https://lore.kernel.org/r/20200929175218.8178-4-manivannan.sadhasivam@linaro.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/bus/mhi/core/pm.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/bus/mhi/core/pm.c b/drivers/bus/mhi/core/pm.c |
| index 7960980780832..661d704c8093d 100644 |
| --- a/drivers/bus/mhi/core/pm.c |
| +++ b/drivers/bus/mhi/core/pm.c |
| @@ -686,7 +686,8 @@ int mhi_pm_suspend(struct mhi_controller *mhi_cntrl) |
| return -EIO; |
| |
| /* Return busy if there are any pending resources */ |
| - if (atomic_read(&mhi_cntrl->dev_wake)) |
| + if (atomic_read(&mhi_cntrl->dev_wake) || |
| + atomic_read(&mhi_cntrl->pending_pkts)) |
| return -EBUSY; |
| |
| /* Take MHI out of M2 state */ |
| @@ -712,7 +713,8 @@ int mhi_pm_suspend(struct mhi_controller *mhi_cntrl) |
| |
| write_lock_irq(&mhi_cntrl->pm_lock); |
| |
| - if (atomic_read(&mhi_cntrl->dev_wake)) { |
| + if (atomic_read(&mhi_cntrl->dev_wake) || |
| + atomic_read(&mhi_cntrl->pending_pkts)) { |
| write_unlock_irq(&mhi_cntrl->pm_lock); |
| return -EBUSY; |
| } |
| -- |
| 2.27.0 |
| |