diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 5645e5d505..b7a6751a9d 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -9874,6 +9874,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 c5796b5a12..8935d58e34 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h @@ -2635,6 +2635,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 73c1306a03..5f8bef7c7c 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -13932,17 +13932,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); } /**