summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lew <clew@codeaurora.org>2016-11-14 18:11:50 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-11-30 18:03:18 -0800
commitfbc3530d4f5f5178dea98ff8df1acb2728a0f027 (patch)
tree7938b2b0e7f7238b093ace90ab0e8798cf8ac332
parent0380dc86d2a75a4ae7d4246a94a5d767b0b75de4 (diff)
soc: qcom: glink: Add pending remote done packets to intent purge
Glink clients are not notified of tx transactions that are waiting for remote rx done commands during SSR. This change adds a notify_tx_abort call for any pending packets during intent purge. Change-Id: I6a6ba17e2dffddc5cdc2de00da737fedf03c9476 Signed-off-by: Chris Lew <clew@codeaurora.org>
-rw-r--r--drivers/soc/qcom/glink.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/soc/qcom/glink.c b/drivers/soc/qcom/glink.c
index 382245eb90b6..326fdf054e19 100644
--- a/drivers/soc/qcom/glink.c
+++ b/drivers/soc/qcom/glink.c
@@ -1665,6 +1665,14 @@ void ch_purge_intent_lists(struct channel_ctx *ctx)
}
spin_unlock_irqrestore(&ctx->tx_lists_lock_lhc3, flags);
+ spin_lock_irqsave(&ctx->tx_pending_rmt_done_lock_lhc4, flags);
+ list_for_each_entry_safe(tx_info, tx_info_temp,
+ &ctx->tx_pending_remote_done, list_done) {
+ ctx->notify_tx_abort(ctx, ctx->user_priv, tx_info->pkt_priv);
+ rwref_put(&tx_info->pkt_ref);
+ }
+ spin_unlock_irqrestore(&ctx->tx_pending_rmt_done_lock_lhc4, flags);
+
spin_lock_irqsave(&ctx->local_rx_intent_lst_lock_lhc1, flags);
list_for_each_entry_safe(ptr_intent, tmp_intent,
&ctx->local_rx_intent_list, list) {