Merge tag 'LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/dataipa into android13-5.4-lahaina

"LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0"

* tag 'LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/platform/vendor/opensource/dataipa:
  msm: ipa: Null terminated interface name string argument received from ioctl
  msm: ipa3: creating new ipc log file for IPA Clocks

Change-Id: I4135d434cb5e7dd1009ce2a66ce0f3d81bf3588a
This commit is contained in:
Michael Bestas 2024-02-09 00:44:13 +02:00
commit db38838ac7
No known key found for this signature in database
GPG Key ID: CC95044519BE6669
3 changed files with 29 additions and 0 deletions

View File

@ -5384,6 +5384,7 @@ void ipa3_enable_clks(void)
idx = ipa3_get_bus_vote(); idx = ipa3_get_bus_vote();
IPADBG_CLK("IPA ICC Voting for BW Started\n");
for (i = 0; i < ipa3_ctx->icc_num_paths; i++) { for (i = 0; i < ipa3_ctx->icc_num_paths; i++) {
if (ipa3_ctx->ctrl->icc_path[i] && if (ipa3_ctx->ctrl->icc_path[i] &&
icc_set_bw( icc_set_bw(
@ -5391,8 +5392,13 @@ void ipa3_enable_clks(void)
ipa3_ctx->icc_clk[idx][i][IPA_ICC_AB], ipa3_ctx->icc_clk[idx][i][IPA_ICC_AB],
ipa3_ctx->icc_clk[idx][i][IPA_ICC_IB])) ipa3_ctx->icc_clk[idx][i][IPA_ICC_IB]))
WARN(1, "path %d bus scaling failed", i); WARN(1, "path %d bus scaling failed", i);
IPADBG_CLK("IPA ICC Voting for BW %d Path Completed\n", i);
} }
IPADBG_CLK("IPA ICC Voting for BW Finished\n");
IPADBG_CLK("Enabling IPA Clocks Started\n");
ipa3_ctx->ctrl->ipa3_enable_clks(); ipa3_ctx->ctrl->ipa3_enable_clks();
IPADBG_CLK("Enabling IPA Clocks Finished\n");
atomic_set(&ipa3_ctx->ipa_clk_vote, 1); atomic_set(&ipa3_ctx->ipa_clk_vote, 1);
} }
@ -5444,10 +5450,13 @@ void ipa3_disable_clks(void)
ipa_assert(); ipa_assert();
} }
IPADBG_CLK("Disabling IPA Clocks Started\n");
ipa3_ctx->ctrl->ipa3_disable_clks(); ipa3_ctx->ctrl->ipa3_disable_clks();
IPADBG_CLK("Disabling IPA Clocks Finished\n");
ipa_pm_set_clock_index(0); ipa_pm_set_clock_index(0);
IPADBG_CLK("IPA ICC Voting for BW Started\n");
for (i = 0; i < ipa3_ctx->icc_num_paths; i++) { for (i = 0; i < ipa3_ctx->icc_num_paths; i++) {
if (ipa3_ctx->ctrl->icc_path[i] && if (ipa3_ctx->ctrl->icc_path[i] &&
icc_set_bw( icc_set_bw(
@ -5455,7 +5464,9 @@ void ipa3_disable_clks(void)
ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_AB], ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_AB],
ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_IB])) ipa3_ctx->icc_clk[IPA_ICC_NONE][i][IPA_ICC_IB]))
WARN(1, "path %d bus off failed", i); WARN(1, "path %d bus off failed", i);
IPADBG_CLK("IPA ICC Voting for BW %d Path Completed\n", i);
} }
IPADBG_CLK("IPA ICC Voting for BW Finished\n");
atomic_set(&ipa3_ctx->ipa_clk_vote, 0); atomic_set(&ipa3_ctx->ipa_clk_vote, 0);
} }
@ -7299,6 +7310,10 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
if (ipa3_ctx->logbuf == NULL) if (ipa3_ctx->logbuf == NULL)
IPADBG("failed to create IPC log, continue...\n"); IPADBG("failed to create IPC log, continue...\n");
ipa3_ctx->logbuf_clk = ipc_log_context_create(IPA_IPC_LOG_PAGES, "ipa_clk", 0);
if (ipa3_ctx->logbuf_clk == NULL)
IPADBG("failed to create IPC ipa_clk log, continue...\n");
/* ipa3_ctx->pdev and ipa3_ctx->uc_pdev will be set in the smmu probes*/ /* ipa3_ctx->pdev and ipa3_ctx->uc_pdev will be set in the smmu probes*/
ipa3_ctx->master_pdev = ipa_pdev; ipa3_ctx->master_pdev = ipa_pdev;
for (i = 0; i < IPA_SMMU_CB_MAX; i++) for (i = 0; i < IPA_SMMU_CB_MAX; i++)

View File

@ -103,6 +103,14 @@
DRV_NAME " %s:%d " fmt, ## args); \ DRV_NAME " %s:%d " fmt, ## args); \
} while (0) } while (0)
#define IPADBG_CLK(fmt, args...) \
do { \
pr_debug(DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args);\
if (ipa3_ctx) \
IPA_IPC_LOGGING(ipa3_ctx->logbuf_clk, \
DRV_NAME " %s:%d " fmt, ## args); \
} while (0)
#define IPAERR(fmt, args...) \ #define IPAERR(fmt, args...) \
do { \ do { \
pr_err(DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args);\ pr_err(DRV_NAME " %s:%d " fmt, __func__, __LINE__, ## args);\
@ -1913,6 +1921,7 @@ struct ipa3_app_clock_vote {
* @modem_cfg_emb_pipe_flt: modem configure embedded pipe filtering rules * @modem_cfg_emb_pipe_flt: modem configure embedded pipe filtering rules
* @logbuf: ipc log buffer for high priority messages * @logbuf: ipc log buffer for high priority messages
* @logbuf_low: ipc log buffer for low priority messages * @logbuf_low: ipc log buffer for low priority messages
* @logbuf_clk: ipc log buffer for ipa clock messages
* @ipa_wdi2: using wdi-2.0 * @ipa_wdi2: using wdi-2.0
* @ipa_fltrt_not_hashable: filter/route rules not hashable * @ipa_fltrt_not_hashable: filter/route rules not hashable
* @use_64_bit_dma_mask: using 64bits dma mask * @use_64_bit_dma_mask: using 64bits dma mask
@ -2052,6 +2061,7 @@ struct ipa3_context {
void *smem_pipe_mem; void *smem_pipe_mem;
void *logbuf; void *logbuf;
void *logbuf_low; void *logbuf_low;
void *logbuf_clk;
struct ipa3_controller *ctrl; struct ipa3_controller *ctrl;
struct idr ipa_idr; struct idr ipa_idr;
struct platform_device *master_pdev; struct platform_device *master_pdev;

View File

@ -4950,6 +4950,10 @@ int rmnet_ipa3_get_wan_mtu(
int rmnet_index; int rmnet_index;
mux_channel = rmnet_ipa3_ctx->mux_channel; mux_channel = rmnet_ipa3_ctx->mux_channel;
/* prevent string buffer overflows */
data->if_name[IPA_RESOURCE_NAME_MAX-1] = '\0';
rmnet_index = rmnet_index =
find_vchannel_name_index(data->if_name); find_vchannel_name_index(data->if_name);