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).