On Tue, Jun 18, 2019 at 01:24:09PM -0700, Rob Clark wrote:
> From: Jayant Shekhar <jshek...@codeaurora.org>
> 
> Since the upstream interconnect bus framework has landed
> upstream, the existing references of custom bus scaling
> needs to be cleaned up.
> 
> Changes in v2:
>       - Fixed build error due to partial clean up
> 
> Changes in v3:
>       - Condense multiple lines into a single line (Sean Paul)
> 
> Changes in v4-v7:
>       - None
> 
> Signed-off-by: Sravanthi Kollukuduru <skoll...@codeaurora.org>
> Signed-off-by: Jayant Shekhar <jshek...@codeaurora.org>
> Signed-off-by: Rob Clark <robdcl...@chromium.org>

Reviewed-by: Sean Paul <s...@poorly.run>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 174 +++++++-----------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h |   4 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c      |  11 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h     |  22 +--
>  4 files changed, 80 insertions(+), 131 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> index 9f20f397f77d..e231c37a9dbb 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> @@ -77,7 +77,6 @@ static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms,
>               struct dpu_core_perf_params *perf)
>  {
>       struct dpu_crtc_state *dpu_cstate;
> -     int i;
>  
>       if (!kms || !kms->catalog || !crtc || !state || !perf) {
>               DPU_ERROR("invalid parameters\n");
> @@ -88,35 +87,24 @@ static void _dpu_core_perf_calc_crtc(struct dpu_kms *kms,
>       memset(perf, 0, sizeof(struct dpu_core_perf_params));
>  
>       if (!dpu_cstate->bw_control) {
> -             for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -                     perf->bw_ctl[i] = kms->catalog->perf.max_bw_high *
> +             perf->bw_ctl = kms->catalog->perf.max_bw_high *
>                                       1000ULL;
> -                     perf->max_per_pipe_ib[i] = perf->bw_ctl[i];
> -             }
> +             perf->max_per_pipe_ib = perf->bw_ctl;
>               perf->core_clk_rate = kms->perf.max_core_clk_rate;
>       } else if (kms->perf.perf_tune.mode == DPU_PERF_MODE_MINIMUM) {
> -             for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -                     perf->bw_ctl[i] = 0;
> -                     perf->max_per_pipe_ib[i] = 0;
> -             }
> +             perf->bw_ctl = 0;
> +             perf->max_per_pipe_ib = 0;
>               perf->core_clk_rate = 0;
>       } else if (kms->perf.perf_tune.mode == DPU_PERF_MODE_FIXED) {
> -             for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -                     perf->bw_ctl[i] = kms->perf.fix_core_ab_vote;
> -                     perf->max_per_pipe_ib[i] = kms->perf.fix_core_ib_vote;
> -             }
> +             perf->bw_ctl = kms->perf.fix_core_ab_vote;
> +             perf->max_per_pipe_ib = kms->perf.fix_core_ib_vote;
>               perf->core_clk_rate = kms->perf.fix_core_clk_rate;
>       }
>  
>       DPU_DEBUG(
> -             "crtc=%d clk_rate=%llu core_ib=%llu core_ab=%llu llcc_ib=%llu 
> llcc_ab=%llu mem_ib=%llu mem_ab=%llu\n",
> +             "crtc=%d clk_rate=%llu core_ib=%llu core_ab=%llu\n",
>                       crtc->base.id, perf->core_clk_rate,
> -                     perf->max_per_pipe_ib[DPU_CORE_PERF_DATA_BUS_ID_MNOC],
> -                     perf->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_MNOC],
> -                     perf->max_per_pipe_ib[DPU_CORE_PERF_DATA_BUS_ID_LLCC],
> -                     perf->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_LLCC],
> -                     perf->max_per_pipe_ib[DPU_CORE_PERF_DATA_BUS_ID_EBI],
> -                     perf->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_EBI]);
> +                     perf->max_per_pipe_ib, perf->bw_ctl);
>  }
>  
>  int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
> @@ -129,7 +117,6 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
>       struct dpu_crtc_state *dpu_cstate;
>       struct drm_crtc *tmp_crtc;
>       struct dpu_kms *kms;
> -     int i;
>  
>       if (!crtc || !state) {
>               DPU_ERROR("invalid crtc\n");
> @@ -151,31 +138,25 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
>       /* obtain new values */
>       _dpu_core_perf_calc_crtc(kms, crtc, state, &dpu_cstate->new_perf);
>  
> -     for (i = DPU_CORE_PERF_DATA_BUS_ID_MNOC;
> -                     i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -             bw_sum_of_intfs = dpu_cstate->new_perf.bw_ctl[i];
> -             curr_client_type = dpu_crtc_get_client_type(crtc);
> +     bw_sum_of_intfs = dpu_cstate->new_perf.bw_ctl;
> +     curr_client_type = dpu_crtc_get_client_type(crtc);
>  
> -             drm_for_each_crtc(tmp_crtc, crtc->dev) {
> -                     if (tmp_crtc->enabled &&
> -                         (dpu_crtc_get_client_type(tmp_crtc) ==
> -                                         curr_client_type) &&
> -                         (tmp_crtc != crtc)) {
> -                             struct dpu_crtc_state *tmp_cstate =
> -                                     to_dpu_crtc_state(tmp_crtc->state);
> -
> -                             DPU_DEBUG("crtc:%d bw:%llu ctrl:%d\n",
> -                                     tmp_crtc->base.id,
> -                                     tmp_cstate->new_perf.bw_ctl[i],
> -                                     tmp_cstate->bw_control);
> -                             /*
> -                              * For bw check only use the bw if the
> -                              * atomic property has been already set
> -                              */
> -                             if (tmp_cstate->bw_control)
> -                                     bw_sum_of_intfs +=
> -                                             tmp_cstate->new_perf.bw_ctl[i];
> -                     }
> +     drm_for_each_crtc(tmp_crtc, crtc->dev) {
> +             if (tmp_crtc->enabled &&
> +                 (dpu_crtc_get_client_type(tmp_crtc) ==
> +                             curr_client_type) && (tmp_crtc != crtc)) {
> +                     struct dpu_crtc_state *tmp_cstate =
> +                             to_dpu_crtc_state(tmp_crtc->state);
> +
> +                     DPU_DEBUG("crtc:%d bw:%llu ctrl:%d\n",
> +                             tmp_crtc->base.id, tmp_cstate->new_perf.bw_ctl,
> +                             tmp_cstate->bw_control);
> +                     /*
> +                      * For bw check only use the bw if the
> +                      * atomic property has been already set
> +                      */
> +                     if (tmp_cstate->bw_control)
> +                             bw_sum_of_intfs += tmp_cstate->new_perf.bw_ctl;
>               }
>  
>               /* convert bandwidth to kb */
> @@ -206,9 +187,9 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
>  }
>  
>  static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
> -             struct drm_crtc *crtc, u32 bus_id)
> +             struct drm_crtc *crtc)
>  {
> -     struct dpu_core_perf_params perf = { { 0 } };
> +     struct dpu_core_perf_params perf = { 0 };
>       enum dpu_crtc_client_type curr_client_type
>                                       = dpu_crtc_get_client_type(crtc);
>       struct drm_crtc *tmp_crtc;
> @@ -221,13 +202,11 @@ static int _dpu_core_perf_crtc_update_bus(struct 
> dpu_kms *kms,
>                               dpu_crtc_get_client_type(tmp_crtc)) {
>                       dpu_cstate = to_dpu_crtc_state(tmp_crtc->state);
>  
> -                     perf.max_per_pipe_ib[bus_id] =
> -                             max(perf.max_per_pipe_ib[bus_id],
> -                             dpu_cstate->new_perf.max_per_pipe_ib[bus_id]);
> +                     perf.max_per_pipe_ib = max(perf.max_per_pipe_ib,
> +                                     dpu_cstate->new_perf.max_per_pipe_ib);
>  
> -                     DPU_DEBUG("crtc=%d bus_id=%d bw=%llu\n",
> -                             tmp_crtc->base.id, bus_id,
> -                             dpu_cstate->new_perf.bw_ctl[bus_id]);
> +                     DPU_DEBUG("crtc=%d bw=%llu\n", tmp_crtc->base.id,
> +                                     dpu_cstate->new_perf.bw_ctl);
>               }
>       }
>       return ret;
> @@ -247,7 +226,6 @@ void dpu_core_perf_crtc_release_bw(struct drm_crtc *crtc)
>       struct dpu_crtc *dpu_crtc;
>       struct dpu_crtc_state *dpu_cstate;
>       struct dpu_kms *kms;
> -     int i;
>  
>       if (!crtc) {
>               DPU_ERROR("invalid crtc\n");
> @@ -283,10 +261,8 @@ void dpu_core_perf_crtc_release_bw(struct drm_crtc *crtc)
>       if (kms->perf.enable_bw_release) {
>               trace_dpu_cmd_release_bw(crtc->base.id);
>               DPU_DEBUG("Release BW crtc=%d\n", crtc->base.id);
> -             for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -                     dpu_crtc->cur_perf.bw_ctl[i] = 0;
> -                     _dpu_core_perf_crtc_update_bus(kms, crtc, i);
> -             }
> +             dpu_crtc->cur_perf.bw_ctl = 0;
> +             _dpu_core_perf_crtc_update_bus(kms, crtc);
>       }
>  }
>  
> @@ -329,11 +305,10 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
>               int params_changed, bool stop_req)
>  {
>       struct dpu_core_perf_params *new, *old;
> -     int update_bus = 0, update_clk = 0;
> +     bool update_bus = false, update_clk = false;
>       u64 clk_rate = 0;
>       struct dpu_crtc *dpu_crtc;
>       struct dpu_crtc_state *dpu_cstate;
> -     int i;
>       struct msm_drm_private *priv;
>       struct dpu_kms *kms;
>       int ret;
> @@ -360,62 +335,49 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
>       new = &dpu_cstate->new_perf;
>  
>       if (crtc->enabled && !stop_req) {
> -             for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -                     /*
> -                      * cases for bus bandwidth update.
> -                      * 1. new bandwidth vote - "ab or ib vote" is higher
> -                      *    than current vote for update request.
> -                      * 2. new bandwidth vote - "ab or ib vote" is lower
> -                      *    than current vote at end of commit or stop.
> -                      */
> -                     if ((params_changed && ((new->bw_ctl[i] >
> -                                             old->bw_ctl[i]) ||
> -                               (new->max_per_pipe_ib[i] >
> -                                             old->max_per_pipe_ib[i]))) ||
> -                         (!params_changed && ((new->bw_ctl[i] <
> -                                             old->bw_ctl[i]) ||
> -                               (new->max_per_pipe_ib[i] <
> -                                             old->max_per_pipe_ib[i])))) {
> -                             DPU_DEBUG(
> -                                     "crtc=%d p=%d 
> new_bw=%llu,old_bw=%llu\n",
> -                                     crtc->base.id, params_changed,
> -                                     new->bw_ctl[i], old->bw_ctl[i]);
> -                             old->bw_ctl[i] = new->bw_ctl[i];
> -                             old->max_per_pipe_ib[i] =
> -                                             new->max_per_pipe_ib[i];
> -                             update_bus |= BIT(i);
> -                     }
> +             /*
> +              * cases for bus bandwidth update.
> +              * 1. new bandwidth vote - "ab or ib vote" is higher
> +              *    than current vote for update request.
> +              * 2. new bandwidth vote - "ab or ib vote" is lower
> +              *    than current vote at end of commit or stop.
> +              */
> +             if ((params_changed && ((new->bw_ctl > old->bw_ctl) ||
> +                     (new->max_per_pipe_ib > old->max_per_pipe_ib))) ||
> +                     (!params_changed && ((new->bw_ctl < old->bw_ctl) ||
> +                     (new->max_per_pipe_ib < old->max_per_pipe_ib)))) {
> +                     DPU_DEBUG("crtc=%d p=%d new_bw=%llu,old_bw=%llu\n",
> +                             crtc->base.id, params_changed,
> +                             new->bw_ctl, old->bw_ctl);
> +                     old->bw_ctl = new->bw_ctl;
> +                     old->max_per_pipe_ib = new->max_per_pipe_ib;
> +                     update_bus = true;
>               }
>  
>               if ((params_changed &&
> -                             (new->core_clk_rate > old->core_clk_rate)) ||
> -                             (!params_changed &&
> -                             (new->core_clk_rate < old->core_clk_rate))) {
> +                     (new->core_clk_rate > old->core_clk_rate)) ||
> +                     (!params_changed &&
> +                     (new->core_clk_rate < old->core_clk_rate))) {
>                       old->core_clk_rate = new->core_clk_rate;
> -                     update_clk = 1;
> +                     update_clk = true;
>               }
>       } else {
>               DPU_DEBUG("crtc=%d disable\n", crtc->base.id);
>               memset(old, 0, sizeof(*old));
>               memset(new, 0, sizeof(*new));
> -             update_bus = ~0;
> -             update_clk = 1;
> +             update_bus = true;
> +             update_clk = true;
>       }
> -     trace_dpu_perf_crtc_update(crtc->base.id,
> -                             new->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_MNOC],
> -                             new->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_LLCC],
> -                             new->bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_EBI],
> -                             new->core_clk_rate, stop_req,
> -                             update_bus, update_clk);
> -
> -     for (i = 0; i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -             if (update_bus & BIT(i)) {
> -                     ret = _dpu_core_perf_crtc_update_bus(kms, crtc, i);
> -                     if (ret) {
> -                             DPU_ERROR("crtc-%d: failed to update bw vote 
> for bus-%d\n",
> -                                       crtc->base.id, i);
> -                             return ret;
> -                     }
> +
> +     trace_dpu_perf_crtc_update(crtc->base.id, new->bw_ctl,
> +             new->core_clk_rate, stop_req, update_bus, update_clk);
> +
> +     if (update_bus) {
> +             ret = _dpu_core_perf_crtc_update_bus(kms, crtc);
> +             if (ret) {
> +                     DPU_ERROR("crtc-%d: failed to update bus bw vote\n",
> +                               crtc->base.id);
> +                     return ret;
>               }
>       }
>  
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> index 37f518815eb7..d2097ef3d716 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> @@ -42,8 +42,8 @@ enum dpu_core_perf_data_bus_id {
>   * @core_clk_rate: core clock rate request
>   */
>  struct dpu_core_perf_params {
> -     u64 max_per_pipe_ib[DPU_CORE_PERF_DATA_BUS_ID_MAX];
> -     u64 bw_ctl[DPU_CORE_PERF_DATA_BUS_ID_MAX];
> +     u64 max_per_pipe_ib;
> +     u64 bw_ctl;
>       u64 core_clk_rate;
>  };
>  
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index dfdfa766da8f..c4db60a8672d 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -1235,19 +1235,14 @@ static int dpu_crtc_debugfs_state_show(struct 
> seq_file *s, void *v)
>  {
>       struct drm_crtc *crtc = (struct drm_crtc *) s->private;
>       struct dpu_crtc *dpu_crtc = to_dpu_crtc(crtc);
> -     int i;
>  
>       seq_printf(s, "client type: %d\n", dpu_crtc_get_client_type(crtc));
>       seq_printf(s, "intf_mode: %d\n", dpu_crtc_get_intf_mode(crtc));
>       seq_printf(s, "core_clk_rate: %llu\n",
>                       dpu_crtc->cur_perf.core_clk_rate);
> -     for (i = DPU_CORE_PERF_DATA_BUS_ID_MNOC;
> -                     i < DPU_CORE_PERF_DATA_BUS_ID_MAX; i++) {
> -             seq_printf(s, "bw_ctl[%d]: %llu\n", i,
> -                             dpu_crtc->cur_perf.bw_ctl[i]);
> -             seq_printf(s, "max_per_pipe_ib[%d]: %llu\n", i,
> -                             dpu_crtc->cur_perf.max_per_pipe_ib[i]);
> -     }
> +     seq_printf(s, "bw_ctl: %llu\n", dpu_crtc->cur_perf.bw_ctl);
> +     seq_printf(s, "max_per_pipe_ib: %llu\n",
> +                             dpu_crtc->cur_perf.max_per_pipe_ib);
>  
>       return 0;
>  }
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h 
> b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> index 8bb46090bd16..1d68e214795e 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_trace.h
> @@ -146,16 +146,12 @@ TRACE_EVENT(dpu_trace_counter,
>  )
>  
>  TRACE_EVENT(dpu_perf_crtc_update,
> -     TP_PROTO(u32 crtc, u64 bw_ctl_mnoc, u64 bw_ctl_llcc,
> -                     u64 bw_ctl_ebi, u32 core_clk_rate,
> -                     bool stop_req, u32 update_bus, u32 update_clk),
> -     TP_ARGS(crtc, bw_ctl_mnoc, bw_ctl_llcc, bw_ctl_ebi, core_clk_rate,
> -             stop_req, update_bus, update_clk),
> +     TP_PROTO(u32 crtc, u64 bw_ctl, u32 core_clk_rate,
> +                     bool stop_req, bool update_bus, bool update_clk),
> +     TP_ARGS(crtc, bw_ctl, core_clk_rate, stop_req, update_bus, update_clk),
>       TP_STRUCT__entry(
>                       __field(u32, crtc)
> -                     __field(u64, bw_ctl_mnoc)
> -                     __field(u64, bw_ctl_llcc)
> -                     __field(u64, bw_ctl_ebi)
> +                     __field(u64, bw_ctl)
>                       __field(u32, core_clk_rate)
>                       __field(bool, stop_req)
>                       __field(u32, update_bus)
> @@ -163,20 +159,16 @@ TRACE_EVENT(dpu_perf_crtc_update,
>       ),
>       TP_fast_assign(
>                       __entry->crtc = crtc;
> -                     __entry->bw_ctl_mnoc = bw_ctl_mnoc;
> -                     __entry->bw_ctl_llcc = bw_ctl_llcc;
> -                     __entry->bw_ctl_ebi = bw_ctl_ebi;
> +                     __entry->bw_ctl = bw_ctl;
>                       __entry->core_clk_rate = core_clk_rate;
>                       __entry->stop_req = stop_req;
>                       __entry->update_bus = update_bus;
>                       __entry->update_clk = update_clk;
>       ),
>        TP_printk(
> -             "crtc=%d bw_mnoc=%llu bw_llcc=%llu bw_ebi=%llu clk_rate=%u 
> stop_req=%d u_bus=%d u_clk=%d",
> +             "crtc=%d bw_ctl=%llu clk_rate=%u stop_req=%d u_bus=%d u_clk=%d",
>                       __entry->crtc,
> -                     __entry->bw_ctl_mnoc,
> -                     __entry->bw_ctl_llcc,
> -                     __entry->bw_ctl_ebi,
> +                     __entry->bw_ctl,
>                       __entry->core_clk_rate,
>                       __entry->stop_req,
>                       __entry->update_bus,
> -- 
> 2.20.1
> 

-- 
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to