From: Abhinav Kumar <quic_abhinavk@quicinc.com> To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>, Bjorn Andersson <bjorn.andersson@linaro.org>, Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie>, <linux-arm-msm@vger.kernel.org>, <dri-devel@lists.freedesktop.org>, Stephen Boyd <swboyd@chromium.org>, <freedreno@lists.freedesktop.org> Subject: Re: [PATCH 1/3] drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx Date: Tue, 29 Mar 2022 14:24:34 -0700 [thread overview] Message-ID: <713d0a4d-0a33-7d1e-b2a9-c3b9aa09a9cb@quicinc.com> (raw) In-Reply-To: <20220217034502.464312-1-dmitry.baryshkov@linaro.org> Assuming this series is newer and supersedes https://patchwork.freedesktop.org/patch/464353/?series=97307&rev=2, please check below. On 2/16/2022 7:45 PM, Dmitry Baryshkov wrote: > Remove loops over hw_vbif. Instead always VBIF's idx as an index in the > array. This fixes an error in dpu_kms_hw_init(), where we fill > dpu_kms->hw_vbif[i], but check for an error pointer at > dpu_kms->hw_vbif[vbif_idx]. > > Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support") > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 10 ++++---- > drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c | 29 +++++++++++------------- > 2 files changed, 17 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index d0653a9ec694..81a35c8d62e7 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -790,11 +790,9 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms) > _dpu_kms_mmu_destroy(dpu_kms); > > if (dpu_kms->catalog) { > - for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { > - u32 vbif_idx = dpu_kms->catalog->vbif[i].id; > - > - if ((vbif_idx < VBIF_MAX) && dpu_kms->hw_vbif[vbif_idx]) > - dpu_hw_vbif_destroy(dpu_kms->hw_vbif[vbif_idx]); > + for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > + if (dpu_kms->hw_vbif[i]) > + dpu_hw_vbif_destroy(dpu_kms->hw_vbif[i]); > } > } > > @@ -1102,7 +1100,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) > for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { > u32 vbif_idx = dpu_kms->catalog->vbif[i].id; > > - dpu_kms->hw_vbif[i] = dpu_hw_vbif_init(vbif_idx, > + dpu_kms->hw_vbif[vbif_idx] = dpu_hw_vbif_init(vbif_idx, > dpu_kms->vbif[vbif_idx], dpu_kms->catalog); > if (IS_ERR_OR_NULL(dpu_kms->hw_vbif[vbif_idx])) { > rc = PTR_ERR(dpu_kms->hw_vbif[vbif_idx]); > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > index 21d20373eb8b..cbbf77b17fc3 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > @@ -11,6 +11,14 @@ > #include "dpu_hw_vbif.h" > #include "dpu_trace.h" > > +static struct dpu_hw_vbif *dpu_get_vbif(struct dpu_kms *dpu_kms, enum dpu_vbif vbif_idx) > +{ > + if (vbif_idx > ARRAY_SIZE(dpu_kms->hw_vbif)) > + return dpu_kms->hw_vbif[vbif_idx]; Shouldnt this be if (vbif_idx < ARRAY_SIZE(dpu_kms->hw_vbif)) return dpu_kms->hw_vbif[vbif_idx]; > + > + return NULL; > +} > + > /** > * _dpu_vbif_wait_for_xin_halt - wait for the xin to halt > * @vbif: Pointer to hardware vbif driver > @@ -148,20 +156,15 @@ static u32 _dpu_vbif_get_ot_limit(struct dpu_hw_vbif *vbif, > void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, > struct dpu_vbif_set_ot_params *params) > { > - struct dpu_hw_vbif *vbif = NULL; > + struct dpu_hw_vbif *vbif; > struct dpu_hw_mdp *mdp; > bool forced_on = false; > u32 ot_lim; > - int ret, i; > + int ret; > > mdp = dpu_kms->hw_mdp; > > - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > - if (dpu_kms->hw_vbif[i] && > - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) > - vbif = dpu_kms->hw_vbif[i]; > - } > - > + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); > if (!vbif || !mdp) { > DRM_DEBUG_ATOMIC("invalid arguments vbif %d mdp %d\n", > vbif != NULL, mdp != NULL); > @@ -204,7 +207,7 @@ void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, > void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, > struct dpu_vbif_set_qos_params *params) > { > - struct dpu_hw_vbif *vbif = NULL; > + struct dpu_hw_vbif *vbif; > struct dpu_hw_mdp *mdp; > bool forced_on = false; > const struct dpu_vbif_qos_tbl *qos_tbl; > @@ -216,13 +219,7 @@ void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, > } > mdp = dpu_kms->hw_mdp; > > - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > - if (dpu_kms->hw_vbif[i] && > - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) { > - vbif = dpu_kms->hw_vbif[i]; > - break; > - } > - } > + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); > > if (!vbif || !vbif->cap) { > DPU_ERROR("invalid vbif %d\n", params->vbif_idx);
WARNING: multiple messages have this Message-ID (diff)
From: Abhinav Kumar <quic_abhinavk@quicinc.com> To: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>, Bjorn Andersson <bjorn.andersson@linaro.org>, Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run> Cc: David Airlie <airlied@linux.ie>, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Stephen Boyd <swboyd@chromium.org> Subject: Re: [PATCH 1/3] drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx Date: Tue, 29 Mar 2022 14:24:34 -0700 [thread overview] Message-ID: <713d0a4d-0a33-7d1e-b2a9-c3b9aa09a9cb@quicinc.com> (raw) In-Reply-To: <20220217034502.464312-1-dmitry.baryshkov@linaro.org> Assuming this series is newer and supersedes https://patchwork.freedesktop.org/patch/464353/?series=97307&rev=2, please check below. On 2/16/2022 7:45 PM, Dmitry Baryshkov wrote: > Remove loops over hw_vbif. Instead always VBIF's idx as an index in the > array. This fixes an error in dpu_kms_hw_init(), where we fill > dpu_kms->hw_vbif[i], but check for an error pointer at > dpu_kms->hw_vbif[vbif_idx]. > > Fixes: 25fdd5933e4c ("drm/msm: Add SDM845 DPU support") > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 10 ++++---- > drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c | 29 +++++++++++------------- > 2 files changed, 17 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index d0653a9ec694..81a35c8d62e7 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -790,11 +790,9 @@ static void _dpu_kms_hw_destroy(struct dpu_kms *dpu_kms) > _dpu_kms_mmu_destroy(dpu_kms); > > if (dpu_kms->catalog) { > - for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { > - u32 vbif_idx = dpu_kms->catalog->vbif[i].id; > - > - if ((vbif_idx < VBIF_MAX) && dpu_kms->hw_vbif[vbif_idx]) > - dpu_hw_vbif_destroy(dpu_kms->hw_vbif[vbif_idx]); > + for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > + if (dpu_kms->hw_vbif[i]) > + dpu_hw_vbif_destroy(dpu_kms->hw_vbif[i]); > } > } > > @@ -1102,7 +1100,7 @@ static int dpu_kms_hw_init(struct msm_kms *kms) > for (i = 0; i < dpu_kms->catalog->vbif_count; i++) { > u32 vbif_idx = dpu_kms->catalog->vbif[i].id; > > - dpu_kms->hw_vbif[i] = dpu_hw_vbif_init(vbif_idx, > + dpu_kms->hw_vbif[vbif_idx] = dpu_hw_vbif_init(vbif_idx, > dpu_kms->vbif[vbif_idx], dpu_kms->catalog); > if (IS_ERR_OR_NULL(dpu_kms->hw_vbif[vbif_idx])) { > rc = PTR_ERR(dpu_kms->hw_vbif[vbif_idx]); > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > index 21d20373eb8b..cbbf77b17fc3 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_vbif.c > @@ -11,6 +11,14 @@ > #include "dpu_hw_vbif.h" > #include "dpu_trace.h" > > +static struct dpu_hw_vbif *dpu_get_vbif(struct dpu_kms *dpu_kms, enum dpu_vbif vbif_idx) > +{ > + if (vbif_idx > ARRAY_SIZE(dpu_kms->hw_vbif)) > + return dpu_kms->hw_vbif[vbif_idx]; Shouldnt this be if (vbif_idx < ARRAY_SIZE(dpu_kms->hw_vbif)) return dpu_kms->hw_vbif[vbif_idx]; > + > + return NULL; > +} > + > /** > * _dpu_vbif_wait_for_xin_halt - wait for the xin to halt > * @vbif: Pointer to hardware vbif driver > @@ -148,20 +156,15 @@ static u32 _dpu_vbif_get_ot_limit(struct dpu_hw_vbif *vbif, > void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, > struct dpu_vbif_set_ot_params *params) > { > - struct dpu_hw_vbif *vbif = NULL; > + struct dpu_hw_vbif *vbif; > struct dpu_hw_mdp *mdp; > bool forced_on = false; > u32 ot_lim; > - int ret, i; > + int ret; > > mdp = dpu_kms->hw_mdp; > > - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > - if (dpu_kms->hw_vbif[i] && > - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) > - vbif = dpu_kms->hw_vbif[i]; > - } > - > + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); > if (!vbif || !mdp) { > DRM_DEBUG_ATOMIC("invalid arguments vbif %d mdp %d\n", > vbif != NULL, mdp != NULL); > @@ -204,7 +207,7 @@ void dpu_vbif_set_ot_limit(struct dpu_kms *dpu_kms, > void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, > struct dpu_vbif_set_qos_params *params) > { > - struct dpu_hw_vbif *vbif = NULL; > + struct dpu_hw_vbif *vbif; > struct dpu_hw_mdp *mdp; > bool forced_on = false; > const struct dpu_vbif_qos_tbl *qos_tbl; > @@ -216,13 +219,7 @@ void dpu_vbif_set_qos_remap(struct dpu_kms *dpu_kms, > } > mdp = dpu_kms->hw_mdp; > > - for (i = 0; i < ARRAY_SIZE(dpu_kms->hw_vbif); i++) { > - if (dpu_kms->hw_vbif[i] && > - dpu_kms->hw_vbif[i]->idx == params->vbif_idx) { > - vbif = dpu_kms->hw_vbif[i]; > - break; > - } > - } > + vbif = dpu_get_vbif(dpu_kms, params->vbif_idx); > > if (!vbif || !vbif->cap) { > DPU_ERROR("invalid vbif %d\n", params->vbif_idx);
next prev parent reply other threads:[~2022-03-29 21:24 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-02-17 3:45 [PATCH 1/3] drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx Dmitry Baryshkov 2022-02-17 3:45 ` Dmitry Baryshkov 2022-02-17 3:45 ` [PATCH 2/3] drm/msm/dpu: fix error handling around dpu_hw_vbif_init Dmitry Baryshkov 2022-02-17 3:45 ` Dmitry Baryshkov 2022-03-29 21:26 ` Abhinav Kumar 2022-03-29 21:26 ` Abhinav Kumar 2022-02-17 3:45 ` [PATCH 3/3] drm/msm/dpu: drop VBIF indices Dmitry Baryshkov 2022-02-17 3:45 ` Dmitry Baryshkov 2022-03-29 21:52 ` Abhinav Kumar 2022-03-29 21:52 ` Abhinav Kumar 2022-03-29 21:24 ` Abhinav Kumar [this message] 2022-03-29 21:24 ` [PATCH 1/3] drm/msm/dpu: index dpu_kms->hw_vbif using vbif_idx Abhinav Kumar
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=713d0a4d-0a33-7d1e-b2a9-c3b9aa09a9cb@quicinc.com \ --to=quic_abhinavk@quicinc.com \ --cc=airlied@linux.ie \ --cc=bjorn.andersson@linaro.org \ --cc=dmitry.baryshkov@linaro.org \ --cc=dri-devel@lists.freedesktop.org \ --cc=freedreno@lists.freedesktop.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=robdclark@gmail.com \ --cc=sean@poorly.run \ --cc=swboyd@chromium.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.