summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Kumar Neelakantam <aneela@codeaurora.org>2017-05-31 18:20:34 +0530
committerArun Kumar Neelakantam <aneela@codeaurora.org>2017-05-31 18:34:36 +0530
commita5e75c2fa7324034a7afa34db1b81ec381e0a2d3 (patch)
tree0a967bbd6a248b006d75e142b18cdba303351e03
parent6cec3ff5ebf94071c991cc350fbb42fab028a306 (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.c2
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;