[PATCH 06/18] drm/amd/display: limit clear_update_flags to dcn32 and above
Melissa Wen
mwen at igalia.com
Mon Jul 14 22:43:03 UTC 2025
On 11/07/2025 16:50, Mario Limonciello wrote:
> On 7/10/2025 4:25 PM, IVAN.LIPSKI at amd.com wrote:
>> From: Charlene Liu <Charlene.Liu at amd.com>
>>
>> [why]
>> dc has some code out of sync:
>> dc_commit_updates_for_stream handles v1/v2/v3,
>> but dc_update_planes_and_stream makes v1 asic to use v2.
>>
>> as a reression fix: limit clear_update_flags to dcn32 or newer asic.
>
> regression
>
>> need to follow up that v1 asic using v2 issue.
>>
>> Reviewed-by: Syed Hassan <syed.hassan at amd.com>
>> Signed-off-by: Charlene Liu <Charlene.Liu at amd.com>
>> Signed-off-by: Ivan Lipski <ivan.lipski at amd.com>
>
> There is a public issue on this regression, we should add the
> following tags so it closes and backports to fix it.
>
> Cc: stable at vger.kernel.org
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4129
> Fixes: 7671f62c10f2 ("drm/amd/display: Clear update flags after update
> has been applied")
Just found this patch, and I suspect it causes a regression on steamdeck
(DCN 3.01), since in the past calling clear_update_flags fixed glitches
related to minimal transition. Except if there are changes on other
parts of the minimal transition machinery that avoid the problem for
some reasons.
Did you guys validate this patch in the scenario described in
https://gitlab.freedesktop.org/drm/amd/-/issues/3441#note_2508309 +
https://gitlab.freedesktop.org/drm/amd/-/issues/3441#note_2510928 ?
If not, I'll do tomorrow.
Melissa
>
> Thanks!
>
>> ---
>> drivers/gpu/drm/amd/display/dc/core/dc.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c
>> b/drivers/gpu/drm/amd/display/dc/core/dc.c
>> index f37ed24b2430..cee45fe7cec9 100644
>> --- a/drivers/gpu/drm/amd/display/dc/core/dc.c
>> +++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
>> @@ -5443,8 +5443,7 @@ bool dc_update_planes_and_stream(struct dc *dc,
>> else
>> ret = update_planes_and_stream_v2(dc, srf_updates,
>> surface_count, stream, stream_update);
>> -
>> - if (ret)
>> + if (ret && dc->ctx->dce_version >= DCN_VERSION_3_2)
>> clear_update_flags(srf_updates, surface_count, stream);
>> return ret;
>> @@ -5475,7 +5474,7 @@ void dc_commit_updates_for_stream(struct dc *dc,
>> ret = update_planes_and_stream_v1(dc, srf_updates,
>> surface_count, stream,
>> stream_update, state);
>> - if (ret)
>> + if (ret && dc->ctx->dce_version >= DCN_VERSION_3_2)
>> clear_update_flags(srf_updates, surface_count, stream);
>> }
>
More information about the amd-gfx
mailing list