From 4763ef465fcaceeeb81f97d251ba03d2d52bc02a Mon Sep 17 00:00:00 2001 From: Prasad Arepalli Date: Fri, 17 Mar 2023 17:40:25 +0530 Subject: [PATCH 1/3] msm: ipa3: Removing assert in halt q6 channel failed cases. Removing assert in halt q6 channel failed cases. Previously added it for debug purpose. Change-Id: If58da0617d9b313038aa7d347e975ce85cbd8e91 --- drivers/platform/msm/ipa/ipa_v3/ipa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index c0d813316098..f3c9902b7233 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. */ #include @@ -3674,7 +3675,6 @@ static void ipa3_halt_q6_gsi_channels(bool prod) gsi_ep_cfg->ipa_gsi_chan_num, gsi_ep_cfg->ee, code); - ipa_assert(); } } } From 1a170ff91793881e5ccfde58efcaac1a859c40e0 Mon Sep 17 00:00:00 2001 From: Jagadeesh Ponduru Date: Thu, 30 Mar 2023 13:09:16 +0530 Subject: [PATCH 2/3] msm: ipa3: fix pointer arithmetic to avoid out-of-bound When offset gets added to base of the array, it returns offset plus the number equal to size of the whole array. So, correct it by passing the address of offset element in the array. Change-Id: I8a087ca277bdc476674c7221b5fc0920e6986570 --- drivers/platform/msm/ipa/ipa_v3/ipa_utils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c index a71731729c37..d29d260e760b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -7281,7 +7281,7 @@ void ipa3_counter_remove_hdl(int hdl) offset = counter->hw_counter.start_id - 1; if (offset >= 0 && (offset + counter->hw_counter.num_counters) < IPA_FLT_RT_HW_COUNTER) { - memset(&ipa3_ctx->flt_rt_counters.used_hw + offset, + memset(&ipa3_ctx->flt_rt_counters.used_hw[offset], 0, counter->hw_counter.num_counters * sizeof(bool)); } else { IPAERR_RL("unexpected hdl %d\n", hdl); @@ -7290,7 +7290,7 @@ void ipa3_counter_remove_hdl(int hdl) offset = counter->sw_counter.start_id - 1 - IPA_FLT_RT_HW_COUNTER; if (offset >= 0 && (offset + counter->sw_counter.num_counters) < IPA_FLT_RT_SW_COUNTER) { - memset(&ipa3_ctx->flt_rt_counters.used_sw + offset, + memset(&ipa3_ctx->flt_rt_counters.used_sw[offset], 0, counter->sw_counter.num_counters * sizeof(bool)); } else { IPAERR_RL("unexpected hdl %d\n", hdl); From 6d9d19a6017b362bc6959b759bd404af49465e00 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Wed, 3 Aug 2022 15:00:23 +0530 Subject: [PATCH 3/3] msm: ipa3: Adding changes to increase workqueue priority In some scenarios WQ scheduling was delayed. To avoid these issues adding changes to increase the WQ priority. Change-Id: I597e73a354f2d136843b19a84c859fe3eb7b51e0 Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index f3c9902b7233..d6e5e11c8e7a 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -7595,8 +7595,8 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, atomic_set(&ipa3_ctx->ipa3_active_clients.cnt, 1); /* Create workqueues for power management */ - ipa3_ctx->power_mgmt_wq = - create_singlethread_workqueue("ipa_power_mgmt"); + ipa3_ctx->power_mgmt_wq = alloc_workqueue("ipa_power_mgmt", + WQ_MEM_RECLAIM | WQ_UNBOUND | WQ_SYSFS | WQ_HIGHPRI, 1); if (!ipa3_ctx->power_mgmt_wq) { IPAERR("failed to create power mgmt wq\n"); result = -ENOMEM;