From f13849040726d154fdff7ccdbbb831490b2a2ee4 Mon Sep 17 00:00:00 2001 From: Prudhvi Yarlagadda Date: Thu, 14 Nov 2019 12:02:42 +0530 Subject: [PATCH] slim-msm-ngd: Add wake lock to avoid race with suspend and SSR Add wake lock in SSR up notification handling to avoid race condition between system suspend and SSR up handling sequence which can result in un-clocked access. Change-Id: I246fa70df53b0cb7acdfcadf9cfe2ce01a3bff6b Signed-off-by: Prudhvi Yarlagadda --- drivers/slimbus/slim-msm-ngd.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/slimbus/slim-msm-ngd.c b/drivers/slimbus/slim-msm-ngd.c index c672c22e6136..bee258e74122 100644 --- a/drivers/slimbus/slim-msm-ngd.c +++ b/drivers/slimbus/slim-msm-ngd.c @@ -166,6 +166,8 @@ static int ngd_slim_qmi_new_server(struct qmi_handle *hdl, container_of(qmi, struct msm_slim_ctrl, qmi); SLIM_INFO(dev, "Slimbus QMI new server event received\n"); + /* Hold wake lock until notify slaves thread is done */ + pm_stay_awake(dev->dev); qmi->svc_info.sq_family = AF_QIPCRTR; qmi->svc_info.sq_node = service->node; qmi->svc_info.sq_port = service->port; @@ -1622,6 +1624,7 @@ static int ngd_notify_slaves(void *data) ret = ngd_slim_qmi_svc_event_init(&dev->qmi); if (ret) { pr_err("Slimbus QMI service registration failed:%d\n", ret); + pm_relax(dev->dev); return ret; } @@ -1662,6 +1665,7 @@ static int ngd_notify_slaves(void *data) } mutex_unlock(&ctrl->m_ctrl); } + pm_relax(dev->dev); return 0; }