From: Sean Paul <seanpaul@chromium.org>
To: Rajesh Yadav <ryadav@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org,
hoegsberg@chromium.org, freedreno@lists.freedesktop.org
Subject: Re: [DPU PATCH v2 12/12] drm/msm/dpu: add error handling in dpu_core_perf_crtc_update
Date: Fri, 11 May 2018 11:49:31 -0400 [thread overview]
Message-ID: <20180511154931.GX33053@art_vandelay> (raw)
In-Reply-To: <1526050178-31893-13-git-send-email-ryadav@codeaurora.org>
On Fri, May 11, 2018 at 08:19:38PM +0530, Rajesh Yadav wrote:
> dpu_core_perf_crtc_update() is responsible for aggregating
> the data bus bandwidth and dpu core clock rate requirements
> and request the same for all active crtcs.
> Currently, there is no error handling support in this function
> so there is no way caller can know if the perf request fails.
> This change adds error handling code in dpu_core_perf_crtc_update().
> The caller side error handling is not added in this patch.
>
> Signed-off-by: Rajesh Yadav <ryadav@codeaurora.org>
Cool! Thanks for doing this :-)
Reviewed-by: Sean Paul <seanpaul@chromium.org>
> ---
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 37 ++++++++++++++++++---------
> drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h | 3 ++-
> 2 files changed, 27 insertions(+), 13 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 d3a1ed9..85c0229 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
> @@ -248,7 +248,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
> return 0;
> }
>
> -static void _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
> +static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
> struct drm_crtc *crtc, u32 bus_id)
> {
> u64 bw_sum_of_intfs = 0, bus_ab_quota, bus_ib_quota;
> @@ -257,6 +257,7 @@ static void _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
> = dpu_crtc_get_client_type(crtc);
> struct drm_crtc *tmp_crtc;
> struct dpu_crtc_state *dpu_cstate;
> + int ret = 0;
>
> drm_for_each_crtc(tmp_crtc, crtc->dev) {
> if (_dpu_core_perf_crtc_is_power_on(tmp_crtc) &&
> @@ -286,25 +287,28 @@ static void _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
>
> switch (curr_client_type) {
> case NRT_CLIENT:
> - dpu_power_data_bus_set_quota(&kms->phandle, kms->core_client,
> + ret = dpu_power_data_bus_set_quota(
> + &kms->phandle, kms->core_client,
> DPU_POWER_HANDLE_DATA_BUS_CLIENT_NRT,
> bus_id, bus_ab_quota, bus_ib_quota);
> DPU_DEBUG("client:%s bus_id=%d ab=%llu ib=%llu\n", "nrt",
> - bus_id, bus_ab_quota, bus_ib_quota);
> + bus_id, bus_ab_quota, bus_ib_quota);
> break;
>
> case RT_CLIENT:
> - dpu_power_data_bus_set_quota(&kms->phandle, kms->core_client,
> + ret = dpu_power_data_bus_set_quota(
> + &kms->phandle, kms->core_client,
> DPU_POWER_HANDLE_DATA_BUS_CLIENT_RT,
> bus_id, bus_ab_quota, bus_ib_quota);
> DPU_DEBUG("client:%s bus_id=%d ab=%llu ib=%llu\n", "rt",
> - bus_id, bus_ab_quota, bus_ib_quota);
> + bus_id, bus_ab_quota, bus_ib_quota);
> break;
>
> default:
> DPU_ERROR("invalid client type:%d\n", curr_client_type);
> break;
> }
> + return ret;
> }
>
> /**
> @@ -399,7 +403,7 @@ static u64 _dpu_core_perf_get_core_clk_rate(struct dpu_kms *kms)
> return clk_rate;
> }
>
> -void dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> +int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> int params_changed, bool stop_req)
> {
> struct dpu_core_perf_params *new, *old;
> @@ -410,16 +414,17 @@ void dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> int i;
> struct msm_drm_private *priv;
> struct dpu_kms *kms;
> + int ret;
>
> if (!crtc) {
> DPU_ERROR("invalid crtc\n");
> - return;
> + return -EINVAL;
> }
>
> kms = _dpu_crtc_get_kms(crtc);
> if (!kms || !kms->catalog) {
> DPU_ERROR("invalid kms\n");
> - return;
> + return -EINVAL;
> }
> priv = kms->dev->dev_private;
>
> @@ -482,8 +487,14 @@ void dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> update_bus, update_clk);
>
> for (i = 0; i < DPU_POWER_HANDLE_DBUS_ID_MAX; i++) {
> - if (update_bus & BIT(i))
> - _dpu_core_perf_crtc_update_bus(kms, crtc, 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;
> + }
> + }
> }
>
> /*
> @@ -495,15 +506,17 @@ void dpu_core_perf_crtc_update(struct drm_crtc *crtc,
>
> DPU_EVT32(kms->dev, stop_req, clk_rate);
>
> - if (_dpu_core_perf_set_core_clk_rate(kms, clk_rate)) {
> + ret = _dpu_core_perf_set_core_clk_rate(kms, clk_rate);
> + if (ret) {
> DPU_ERROR("failed to set %s clock rate %llu\n",
> kms->perf.core_clk->clk_name, clk_rate);
> - return;
> + return ret;
> }
>
> kms->perf.core_clk_rate = clk_rate;
> DPU_DEBUG("update clk rate = %lld HZ\n", clk_rate);
> }
> + return 0;
> }
>
> #ifdef CONFIG_DEBUG_FS
> 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 cde48df..440d6a2 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.h
> @@ -91,8 +91,9 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
> * @crtc: Pointer to crtc
> * @params_changed: true if crtc parameters are modified
> * @stop_req: true if this is a stop request
> + * return: zero if success, or error code otherwise
> */
> -void dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> +int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
> int params_changed, bool stop_req);
>
> /**
> --
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
>
--
Sean Paul, Software Engineer, Google / Chromium OS
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2018-05-11 15:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-11 14:49 [DPU PATCH v2 00/12] Refactor DPU device/driver hierarchy and add runtime_pm support Rajesh Yadav
2018-05-11 14:49 ` [DPU PATCH v2 02/12] drm/msm/mdp5: subclass msm_mdss for mdp5 Rajesh Yadav
[not found] ` <1526050178-31893-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 14:49 ` [DPU PATCH v2 01/12] drm/msm: remove redundant pm_runtime_enable call from msm_drv Rajesh Yadav
2018-05-11 14:49 ` [DPU PATCH v2 03/12] drm/msm/dpu: add MDSS top level driver for dpu Rajesh Yadav
2018-05-11 15:28 ` Sean Paul
2018-05-14 14:06 ` ryadav
[not found] ` <1526050178-31893-4-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 17:05 ` Jordan Crouse
[not found] ` <20180511170523.GF4995-9PYrDHPZ2Orvke4nUoYGnHL1okKdlPRT@public.gmane.org>
2018-05-11 18:32 ` Sean Paul
2018-05-11 14:49 ` [DPU PATCH v2 04/12] drm/msm/dpu: create new platform driver for dpu device Rajesh Yadav
[not found] ` <1526050178-31893-5-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 15:30 ` Sean Paul
2018-05-11 17:06 ` Jordan Crouse
2018-05-11 14:49 ` [DPU PATCH v2 06/12] drm/msm/dpu: use runtime_pm calls on " Rajesh Yadav
2018-05-11 14:49 ` [DPU PATCH v2 07/12] drm/msm/dpu: remove clock management code from dpu_power_handle Rajesh Yadav
[not found] ` <1526050178-31893-8-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 15:35 ` Sean Paul
2018-05-11 14:49 ` [DPU PATCH v2 08/12] drm/msm/dpu: remove power " Rajesh Yadav
[not found] ` <1526050178-31893-9-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 15:40 ` Sean Paul
2018-05-11 14:49 ` [DPU PATCH v2 09/12] drm/msm/dp: remove dpu_power_handle calls from dp driver Rajesh Yadav
2018-05-11 14:49 ` [DPU PATCH v2 10/12] drm/msm/dpu: use runtime_pm calls in dpu_dbg Rajesh Yadav
[not found] ` <1526050178-31893-11-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 15:47 ` Sean Paul
2018-05-11 14:49 ` [DPU PATCH v2 11/12] drm/msm/dpu: move dpu_power_handle to dpu folder Rajesh Yadav
[not found] ` <1526050178-31893-12-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2018-05-11 15:48 ` Sean Paul
2018-05-11 14:49 ` [DPU PATCH v2 12/12] drm/msm/dpu: add error handling in dpu_core_perf_crtc_update Rajesh Yadav
2018-05-11 15:49 ` Sean Paul [this message]
2018-05-11 14:49 ` [DPU PATCH v2 05/12] drm/msm/dpu: update dpu sub-block offsets wrt dpu base address Rajesh Yadav
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=20180511154931.GX33053@art_vandelay \
--to=seanpaul@chromium.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=hoegsberg@chromium.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=ryadav@codeaurora.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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).