lkml.org 
[lkml]   [2019]   [Jul]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] drm/komeda: Skips the invalid writeback job
On Fri, Jul 26, 2019 at 08:13:00AM +0000, Lowry Li (Arm Technology China) wrote:
> Current DRM-CORE accepts the writeback_job with a empty fb, but that
> is an invalid job for HW, so need to skip it when commit it to HW.
>
> Signed-off-by: Lowry Li (Arm Technology China) <lowry.li@arm.com>

Hm, this sounds a bit like an oversight in core writeback code? Not sure
how this can even happen, setting up a writeback job without an fb sounds
a bit like a bug to me at least ...

If we don't have a good reason for why other hw needs to accept this, then
imo this needs to be rejected in shared code. For consistent behaviour
across all writeback supporting drivers.
-Daniel

> ---
> drivers/gpu/drm/arm/display/komeda/komeda_crtc.c | 2 +-
> drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c | 9 ++++++++-
> 2 files changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
> index 2fed1f6..372e99a 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
> @@ -265,7 +265,7 @@ void komeda_crtc_handle_event(struct komeda_crtc *kcrtc,
> komeda_pipeline_update(slave, old->state);
>
> conn_st = wb_conn ? wb_conn->base.base.state : NULL;
> - if (conn_st && conn_st->writeback_job)
> + if (conn_st && conn_st->writeback_job && conn_st->writeback_job->fb)
> drm_writeback_queue_job(&wb_conn->base, conn_st);
>
> /* step 2: notify the HW to kickoff the update */
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
> index 9787745..8e2ef63 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_wb_connector.c
> @@ -52,9 +52,16 @@
> struct komeda_data_flow_cfg dflow;
> int err;
>
> - if (!writeback_job || !writeback_job->fb)
> + if (!writeback_job)
> return 0;
>
> + if (!writeback_job->fb) {
> + if (writeback_job->out_fence)
> + DRM_DEBUG_ATOMIC("Out fence required on a invalid writeback job.\n");
> +
> + return writeback_job->out_fence ? -EINVAL : 0;
> + }
> +
> if (!crtc_st->active) {
> DRM_DEBUG_ATOMIC("Cannot write the composition result out on a inactive CRTC.\n");
> return -EINVAL;
> --
> 1.9.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

\
 
 \ /
  Last update: 2019-07-26 16:25    [W:0.048 / U:0.516 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site