summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJagadeesh Ponduru <quic_jponduru@quicinc.com>2022-10-20 14:52:48 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2022-12-05 01:29:21 -0800
commitf357351e5c111e04c9ed274894d65d2a2a173afc (patch)
treeafa2f9be6b22c48d3d09c40bba982eeb585ce130
parent4f30df36d53f3fe65d5a283dda58acfc234d354f (diff)
downloaddataipa-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.c1
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_i.h1
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa_utils.c8
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);
}
/**