diff options
| author | Arun Kumar Neelakantam <aneela@codeaurora.org> | 2017-05-31 18:20:34 +0530 |
|---|---|---|
| committer | Arun Kumar Neelakantam <aneela@codeaurora.org> | 2017-05-31 18:34:36 +0530 |
| commit | a5e75c2fa7324034a7afa34db1b81ec381e0a2d3 (patch) | |
| tree | 0a967bbd6a248b006d75e142b18cdba303351e03 | |
| parent | 6cec3ff5ebf94071c991cc350fbb42fab028a306 (diff) | |
soc: qcom: glink_smem_native_xprt: recovery from SSR in tasklet only
Checking RX_FIFO allocation status from deferred thread also causes
in_ssr flag reset and reading stale data from FIFO, If the deferred
thread schedules after the execution of ssr() function.
Check RX_FIFO status only after receiving the interrupt from remote
side which happens after remote sub-system recover from SSR.
CRs-Fixed: 2054480
Change-Id: I39269f6b2e1f1cb9aecd25fa40e73c2d6f12dbd5
Signed-off-by: Arun Kumar Neelakantam <aneela@codeaurora.org>
| -rw-r--r-- | drivers/soc/qcom/glink_smem_native_xprt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/soc/qcom/glink_smem_native_xprt.c b/drivers/soc/qcom/glink_smem_native_xprt.c index 168db46084df..8385987e8888 100644 --- a/drivers/soc/qcom/glink_smem_native_xprt.c +++ b/drivers/soc/qcom/glink_smem_native_xprt.c @@ -849,7 +849,7 @@ static void __rx_worker(struct edge_info *einfo, bool atomic_ctx) rcu_id = srcu_read_lock(&einfo->use_ref); - if (unlikely(!einfo->rx_fifo)) { + if (unlikely(!einfo->rx_fifo) && atomic_ctx) { if (!get_rx_fifo(einfo)) { srcu_read_unlock(&einfo->use_ref, rcu_id); return; |
