diff options
author | Jagadeesh Ponduru <quic_jponduru@quicinc.com> | 2022-10-20 14:52:48 +0530 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2022-12-05 01:29:21 -0800 |
commit | f357351e5c111e04c9ed274894d65d2a2a173afc (patch) | |
tree | afa2f9be6b22c48d3d09c40bba982eeb585ce130 | |
parent | 4f30df36d53f3fe65d5a283dda58acfc234d354f (diff) | |
download | dataipa-f357351e5c111e04c9ed274894d65d2a2a173afc.tar.gz |
msm: ipa3: add new mutex lock to update is_modem_up flag.
Adding new mutex lock to update is_modem_up flag because
in Modem SSR scenarios if we use mutex variable "lock" it
is waiting for it to be released by other thread & partially
leading to SSR timeout. As we don't need to have a common
mutex variable "lock" for this, a new mutex can help in moving
further in clean up the pipes.
Change-Id: I8e6e4c0181f7765b334aefefd9616329503fdc2c
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa.c | 1 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_i.h | 1 | ||||
-rw-r--r-- | drivers/platform/msm/ipa/ipa_v3/ipa_utils.c | 8 |
3 files changed, 6 insertions, 4 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 24f1923..9633284 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -9841,6 +9841,7 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, ipa3_ctx->free_page_task_scheduled = false; mutex_init(&ipa3_ctx->app_clock_vote.mutex); + mutex_init(&ipa3_ctx->ssr_lock); ipa3_ctx->is_modem_up = false; ipa3_ctx->mhi_ctrl_state = IPA_MHI_CTRL_NOT_SETUP; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h index b603378..9f1ea0b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h @@ -2594,6 +2594,7 @@ struct ipa3_context { struct ipa3_page_recycle_stats prev_default_recycle_stats; struct ipa3_page_recycle_stats prev_low_lat_data_recycle_stats; struct mutex recycle_stats_collection_lock; + struct mutex ssr_lock; }; struct ipa3_plat_drv_res { diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c index cc48442..7b48bae 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -13364,17 +13364,17 @@ bool ipa3_is_modem_up(void) { bool is_up; - mutex_lock(&ipa3_ctx->lock); + mutex_lock(&ipa3_ctx->ssr_lock); is_up = ipa3_ctx->is_modem_up; - mutex_unlock(&ipa3_ctx->lock); + mutex_unlock(&ipa3_ctx->ssr_lock); return is_up; } void ipa3_set_modem_up(bool is_up) { - mutex_lock(&ipa3_ctx->lock); + mutex_lock(&ipa3_ctx->ssr_lock); ipa3_ctx->is_modem_up = is_up; - mutex_unlock(&ipa3_ctx->lock); + mutex_unlock(&ipa3_ctx->ssr_lock); } /** |