From: Melissa Wen <mwen@igalia.com>
To: Zaeem Mohamed <zaeem.mohamed@amd.com>,
airlied@gmail.com, alexander.deucher@amd.com,
christian.koenig@amd.com, daniel@ffwll.ch,
harry.wentland@amd.com, Rodrigo.Siqueira@amd.com,
sunpeng.li@amd.com, Xinhui.Pan@amd.com
Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
kernel-dev@igalia.com
Subject: Re: [RFC 1/1] SWDEV476969 - dm: Fail dm_atomic_check if cursor overlay is required at MAX_SURFACES
Date: Fri, 25 Oct 2024 23:01:40 -0300 [thread overview]
Message-ID: <575d66c7-e77d-42ea-acbf-412d6e508a0b@igalia.com> (raw)
In-Reply-To: <20241025193727.765195-2-zaeem.mohamed@amd.com>
On 25/10/2024 16:37, Zaeem Mohamed wrote:
> [why]
> Prevent index-out-of-bounds due to requiring cursor overlay when
> plane_count is MAX_SURFACES.
Hi Zaeem,
Thanks for working on this fix.
>
> [how]
> Bounds check on plane_count when requiring overlay cursor.
I agree. Atomic check makes sense.
1) Since the native cursor mode was previously the unique mode avaliable, I
wonder if the driver should fall to native cursor mode in favor of the
overlay
planes advertised. I.e. if driver says it supports two overlay planes and
the userspace requested both, cursor overlay mode should not be available or
should switch to native cursor mode, as before the introduction of cursor
overlay mode.
2) Then my second question: can we increase the number of surfaces to 4
first to
accommodate more than one active overlay plane with cursor overly mode
enabled.
If four is still possible, this increase can reduce the number of commit
failure scenarios and mitigate current userspace issues first. After
addressing
current array-out-of-bounds, follow-up patches can do the proper changes and
checks.
3) IMHO, the incoherence between MAX_SURFACE_NUM and MAX_SURFACE should be
addressed before adding debugging points. For example, there are part of the
DC code using MAX_SURFACE_NUM == MAX_PLANE == 6 to allocate
dc_surface_update
arrays, instead of using MAX_SURFACE value. You can find one of this
case here:
https://gitlab.freedesktop.org/agd5f/linux/-/blob/amd-staging-drm-next/drivers/gpu/drm/amd/display/dc/core/dc.c#L4507
It doesn't make sense to me and it can contribute to an incomplete solution.
Also, please add the references of bugs reported in the amd tracker, so far:
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3693
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/3594
> Co-developed-by: Melissa Wen <mwen@igalia.com>
I don't think I contributed enough to your code to get any credits.
Thanks, but you can remove my co-dev-by :)
Best Regards,
Melissa
> Signed-off-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
> ---
> amdgpu_dm/amdgpu_dm.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/amdgpu_dm/amdgpu_dm.c b/amdgpu_dm/amdgpu_dm.c
> index df83e7b42b..c2595efb74 100644
> --- a/amdgpu_dm/amdgpu_dm.c
> +++ b/amdgpu_dm/amdgpu_dm.c
> @@ -11676,6 +11676,12 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
> * need to be added for DC to not disable a plane by mistake
> */
> if (dm_new_crtc_state->cursor_mode == DM_CURSOR_OVERLAY_MODE) {
> + if(dc->current_state->stream_status->plane_count >= MAX_SURFACES){
> + drm_dbg_driver(crtc->dev,
> + "Can't enable cursor plane with %d planes\n", MAX_SURFACES);
> + ret = -EINVAL;
> + goto fail;
> + }
> ret = drm_atomic_add_affected_planes(state, crtc);
> if (ret)
> goto fail;
> @@ -11769,8 +11775,16 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
>
> /* Overlay cusor not subject to native cursor restrictions */
> dm_new_crtc_state = to_dm_crtc_state(new_crtc_state);
> - if (dm_new_crtc_state->cursor_mode == DM_CURSOR_OVERLAY_MODE)
> + if (dm_new_crtc_state->cursor_mode == DM_CURSOR_OVERLAY_MODE){
> + if(dc->current_state->stream_status->plane_count > MAX_SURFACES){
> + drm_dbg_driver(crtc->dev,
> + "Can't enable cursor plane with %d planes\n", MAX_SURFACES);
> + ret = -EINVAL;
> + goto fail;
> + }
> +
> continue;
> + }
>
> /* Check if rotation or scaling is enabled on DCN401 */
> if ((drm_plane_mask(crtc->cursor) & new_crtc_state->plane_mask) &&
next prev parent reply other threads:[~2024-10-26 2:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-25 19:37 [RFC 0/1] Fail dm_atomic_check if cursor overlay is required at MAX_SURFACES Zaeem Mohamed
2024-10-25 19:37 ` [RFC 1/1] SWDEV476969 - dm: " Zaeem Mohamed
2024-10-26 2:01 ` Melissa Wen [this message]
2024-10-28 19:04 ` Leo Li
2024-11-11 20:49 ` Melissa Wen
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=575d66c7-e77d-42ea-acbf-412d6e508a0b@igalia.com \
--to=mwen@igalia.com \
--cc=Rodrigo.Siqueira@amd.com \
--cc=Xinhui.Pan@amd.com \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=kernel-dev@igalia.com \
--cc=sunpeng.li@amd.com \
--cc=zaeem.mohamed@amd.com \
/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