lkml.org 
[lkml]   [2020]   [Nov]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe:Re: [PATCH] gpu/drm: make crtc check before new connector circle
From
Date


From: Daniel Vetter <daniel@ffwll.ch>
Date: 2020-11-02 18:17:24
To: Bernard Zhao <bernard@vivo.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,Maxime Ripard <mripard@kernel.org>,Thomas Zimmermann <tzimmermann@suse.de>,David Airlie <airlied@linux.ie>,Daniel Vetter <daniel@ffwll.ch>,dri-devel@lists.freedesktop.org,linux-kernel@vger.kernel.org,opensource.kernel@vivo.com
Subject: Re: [PATCH] gpu/drm: make crtc check before new_connector circle>On Sun, Nov 01, 2020 at 06:58:51PM -0800, Bernard Zhao wrote:
>> In function prepare_signaling, crtc check (c==0) is not related
>> with the next new_connector circle, maybe we can put the crtc
>> check just after the crtc circle and before new_connector circle.
>> This change is to make the code to run a bit first.
>
>I'm a bit confused here with your explanation, I'm not understanding why
>you do this change ... Can you pls elaborate? Maybe give an example or
>something of the problem this patch solves, that often helps.
>
>Thanks, Daniel

Hi:

This change is to make the function return error earlier when run into the error branch:
if (c == 0 && (arg->flags & DRM_MODE_PAGE_FLIP_EVENT))
return -EINVAL;
There two main FOR circles in this function, and the second FOR circle never changes the if condition("(c == 0 && (arg->flags & DRM_MODE_PAGE_FLIP_EVENT))") variable`s value, like c & arg->flags.
So I think maybe we can check this condition before the second for circle, and return the error earlier when run into this error branch.

BR//Bernard

>>
>> Signed-off-by: Bernard Zhao <bernard@vivo.com>
>> ---
>> drivers/gpu/drm/drm_atomic_uapi.c | 13 ++++++-------
>> 1 file changed, 6 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
>> index 25c269bc4681..566110996474 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -1182,6 +1182,12 @@ static int prepare_signaling(struct drm_device *dev,
>>
>> c++;
>> }
>> + /*
>> + * Having this flag means user mode pends on event which will never
>> + * reach due to lack of at least one CRTC for signaling
>> + */
>> + if (c == 0 && (arg->flags & DRM_MODE_PAGE_FLIP_EVENT))
>> + return -EINVAL;
>>
>> for_each_new_connector_in_state(state, conn, conn_state, i) {
>> struct drm_writeback_connector *wb_conn;
>> @@ -1220,13 +1226,6 @@ static int prepare_signaling(struct drm_device *dev,
>> conn_state->writeback_job->out_fence = fence;
>> }
>>
>> - /*
>> - * Having this flag means user mode pends on event which will never
>> - * reach due to lack of at least one CRTC for signaling
>> - */
>> - if (c == 0 && (arg->flags & DRM_MODE_PAGE_FLIP_EVENT))
>> - return -EINVAL;
>> -
>> return 0;
>> }
>>
>> --
>> 2.29.0
>>
>
>--
>Daniel Vetter
>Software Engineer, Intel Corporation
>http://blog.ffwll.ch


\
 
 \ /
  Last update: 2020-11-02 14:14    [W:0.052 / U:0.480 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site