From 93ce33b50af71c25e7454dfeda70101e97efd544 Mon Sep 17 00:00:00 2001 From: liujg6 Date: Mon, 28 Mar 2022 10:27:20 +0800 Subject: [PATCH] disp: msm: use vzalloc for large allocations Large allocations using kzalloc can lead to timeouts. This updates the allocation calls accordingly to use vzalloc to remove requirements on contiguous memory. Mot-CRs-fixed: (CR) Change-Id: I86fa0ae13277d97477210a082703514df792d8a9 Signed-off-by: Nilaan Gunabalachandran Reviewed-on: https://gerrit.mot.com/2227151 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Zhangqing Huang Reviewed-by: Wang Wang Submit-Approved: Jira Key --- msm/sde/sde_hw_reg_dma_v1_color_proc.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/msm/sde/sde_hw_reg_dma_v1_color_proc.c b/msm/sde/sde_hw_reg_dma_v1_color_proc.c index 54629ab004fd..4d40186d63d1 100644 --- a/msm/sde/sde_hw_reg_dma_v1_color_proc.c +++ b/msm/sde/sde_hw_reg_dma_v1_color_proc.c @@ -490,7 +490,7 @@ void reg_dmav1_setup_dspp_vlutv18(struct sde_hw_dspp *ctx, void *cfg) return; } - data = kzalloc(VLUT_LEN, GFP_KERNEL); + data = vzalloc(VLUT_LEN); if (!data) return; @@ -537,7 +537,7 @@ void reg_dmav1_setup_dspp_vlutv18(struct sde_hw_dspp *ctx, void *cfg) } exit: - kfree(data); + vfree(data); /* update flush bit */ if (!rc && ctl && ctl->ops.update_bitmask_dspp_pavlut) { int dspp_idx; @@ -1152,7 +1152,7 @@ int reg_dmav1_setup_rc_datav1(struct sde_hw_dspp *ctx, void *cfg) } DRM_DEBUG_DRIVER("allocating %u bytes of memory for dma\n", buf_sz); - data = kzalloc(buf_sz, GFP_KERNEL); + data = vzalloc(buf_sz); if (!data) { DRM_ERROR("memory allocation failed ret %d\n", rc); return -ENOMEM; @@ -1188,7 +1188,7 @@ int reg_dmav1_setup_rc_datav1(struct sde_hw_dspp *ctx, void *cfg) } exit: - kfree(data); + vfree(data); return rc; } @@ -1291,7 +1291,7 @@ void reg_dmav1_setup_dspp_pccv4(struct sde_hw_dspp *ctx, void *cfg) return; } - data = kzalloc(PCC_LEN, GFP_KERNEL); + data = vzalloc(PCC_LEN); if (!data) return; @@ -1357,7 +1357,7 @@ void reg_dmav1_setup_dspp_pccv4(struct sde_hw_dspp *ctx, void *cfg) DRM_ERROR("failed to kick off ret %d\n", rc); exit: - kfree(data); + vfree(data); } void reg_dmav1_setup_dspp_pa_hsicv17(struct sde_hw_dspp *ctx, void *cfg) @@ -2333,7 +2333,7 @@ static int reg_dmav1_setup_vig_igc_common(struct sde_hw_reg_dma_ops *dma_ops, hw_cfg->len, sizeof(struct drm_msm_igc_lut)); } - data = kzalloc(VIG_1D_LUT_IGC_LEN * sizeof(u32), GFP_KERNEL); + data = vzalloc(VIG_1D_LUT_IGC_LEN * sizeof(u32)); if (!data) return -ENOMEM; @@ -2395,7 +2395,7 @@ static int reg_dmav1_setup_vig_igc_common(struct sde_hw_reg_dma_ops *dma_ops, if (rc) DRM_ERROR("setting opcode failed ret %d\n", rc); exit: - kfree(data); + vfree(data); return rc; } @@ -2597,7 +2597,7 @@ void reg_dmav1_setup_dma_igcv5(struct sde_hw_pipe *ctx, void *cfg, return; } - data = kzalloc(DMA_1D_LUT_IGC_LEN * sizeof(u32), GFP_KERNEL); + data = vzalloc(DMA_1D_LUT_IGC_LEN * sizeof(u32)); if (!data) { DRM_ERROR("failed to allocate memory for igc\n"); return; @@ -2658,7 +2658,7 @@ void reg_dmav1_setup_dma_igcv5(struct sde_hw_pipe *ctx, void *cfg, if (rc) DRM_ERROR("failed to kick off ret %d\n", rc); igc_exit: - kfree(data); + vfree(data); } static void dma_gcv5_off(struct sde_hw_pipe *ctx, void *cfg,