On Monday, September 21, 2026 5:43:31 PM Central European Summer Time Mario 
Limonciello wrote:
> On 9/21/26 10:33, Mario Limonciello wrote:
> > On 9/21/26 05:41, Timur Kristóf wrote:
> >> DCE6 should use legacy fast updates, just like all DCE8 - DCN2.
> >> 
> >> Technically DCE6 should have been included when the fast update
> >> code was refactored, but it just happened to work until now.
> >> 
> >> A recent commit "Attach only plane updates that actually changed"
> >> has exposed this issue because with that commit, DC accidentally
> >> took the new fast update code path for DCE6 as well, which caused
> >> it to boot into a black screen with a flip done timeout.
> >> 
> >> This fix should be backported to all kernel versions that
> >> have "Refactor fast update to use new HWSS build sequence",
> >> but this patch won't apply cleanly to older kernels due to
> >> another refactor in "Remove dc param from check_update".
> >> 
> >> Fixes: 0baae6246307 ("drm/amd/display: Refactor fast update to use new
> >> HWSS build sequence")
> >> Fixes: 9ec11bb842b6 ("drm/amd/display: Remove dc param from
> >> check_update")
> >> Signed-off-by: Timur Kristóf <[email protected]>
> > 
> > Reviewed-by: Mario Limonciello <[email protected]>> ---
> > 
> >>   .../drm/amd/display/dc/resource/dce60/dce60_resource.c    | 8 ++++++++
> >>   1 file changed, 8 insertions(+)
> >> 
> >> diff --git a/drivers/gpu/drm/amd/display/dc/resource/dce60/
> >> dce60_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dce60/
> >> dce60_resource.c
> >> index d2d56a1c4b8b..f4efa55952f3 100644
> >> --- a/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c
> >> +++ b/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c
> >> @@ -448,6 +448,12 @@ static const struct dce_abm_mask abm_mask = {
> >>           ABM_MASK_SH_LIST_DCE110(_MASK)
> >>   };
> >> +static const struct dc_debug_options debug_defaults = { 0 };
> >> +
> >> +static const struct dc_check_config config_defaults = {
> >> +    .enable_legacy_fast_update = true,
> >> +};
> >> +
> >>   #define CTX  ctx
> >>   #define REG(reg) mm ## reg
> >> @@ -937,6 +943,8 @@ static bool dce60_construct(
> >>       dc->caps.max_cursor_size = 64;
> >>       dc->caps.dual_link_dvi = true;
> >>       dc->caps.extended_aux_timeout_support = false;
> >> +    dc->debug = debug_defaults;
> >> +    dc->check_config = config_defaults;
> >>       /*************************************************
> >>        *  Create resources                             *
> 
> I would be remiss not to share something the code-review agent flagged
> when testing this for merge.
> 
> ---
> Incomplete fix: this is only dce60_construct(), which
> dc_create_resource_pool() uses for DCE_VERSION_6_0 (Tahiti / Pitcairn /
> Cape Verde) only.
> 
> dce60_resource.c has two more constructors that are reached for the
> other SI parts (see resource_parse_asic_id() in core/dc_resource.c:150-158):
> 
> dce61_construct() (line 1120) -> DCE_VERSION_6_1 (Hainan)
> dce64_construct() (line 1318) -> DCE_VERSION_6_4 (Oland)
> Neither gets dc->check_config assigned, so enable_legacy_fast_update
> stays false there (dc is kvzalloc'd in dc_create()), and both keep
> taking the new fast-update path that ac8349780c5d exposes. They should
> hit exactly the same black screen / flip-done timeout this patch is
> fixing, since all three share dce60_hw_sequencer_construct() and
> dce60_res_pool_funcs.
> 
> Suggest adding the same two lines to both, e.g. after dc->caps.is_apu =
> true; at line 1144 (dce61) and line 1342 (dce64):
> 
> dc->debug = debug_defaults;
> dc->check_config = config_defaults;
> ---
> 
> I'll hold up the merge to decide what to do (we can just have a v2 if
> you want).

Thanks for calling that out. I'll send a second version.




Reply via email to