From: Roman Li Roman.Li@amd.com
[ Upstream commit 02f3ec53177243d32ee8b6f8ba99136d7887ee3a ]
[Why] "REG_WAIT timeout 1us * 1000 tries - dcn314_dsc_pg_control line" warnings seen after resuming from s2idle. DCN314 has issues with DSC power gating that cause REG_WAIT timeouts when attempting to power down DSC blocks.
[How] Disable dsc_power_gate for dcn314 by default.
Reviewed-by: Nicholas Kazlauskas nicholas.kazlauskas@amd.com Signed-off-by: Roman Li Roman.Li@amd.com Signed-off-by: Ivan Lipski ivan.lipski@amd.com Tested-by: Daniel Wheeler daniel.wheeler@amd.com Signed-off-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
Based on my analysis of the commit and examination of the Linux kernel codebase, here is my assessment:
**Backport Status: YES**
This commit should be backported to stable kernel trees for the following reasons:
1. **Clear Bug Fix**: The commit addresses a specific bug - "REG_WAIT timeout 1us * 1000 tries" warnings that occur after resuming from s2idle (suspend-to-idle). This is a user-visible issue that affects system stability during power management operations.
2. **Small and Contained Change**: The fix is minimal - it only adds a single line `disable_dsc_power_gate = true` to the debug_defaults_drv structure in `/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c`. This is a low-risk configuration change.
3. **Hardware-Specific Workaround**: The change is specifically targeted at DCN314 hardware which has known issues with DSC (Display Stream Compression) power gating. The commit message clearly states "DCN314 has issues with DSC power gating that cause REG_WAIT timeouts when attempting to power down DSC blocks."
4. **No Feature Addition**: This is purely a bug fix/workaround - it disables a problematic power management feature rather than adding new functionality.
5. **Power Management Bug**: Issues that affect suspend/resume functionality are particularly important for stable kernels as they directly impact user experience and system reliability.
6. **Existing Framework**: The `disable_dsc_power_gate` flag already exists in the codebase (defined in `/drivers/gpu/drm/amd/display/dc/dc.h`) and is checked in multiple places like `dcn31_hwseq.c` and `dcn20_hwseq.c`. This commit just sets the flag for DCN314 specifically.
7. **Minimal Risk of Regression**: Setting this flag only affects DSC power gating behavior on DCN314 hardware. The worst case would be slightly higher power consumption when DSC blocks are not in use, which is acceptable compared to system instability during resume.
8. **Clear Testing**: The commit has been reviewed by Nicholas Kazlauskas and tested by Daniel Wheeler, indicating proper validation.
This is exactly the type of hardware-specific bug fix that stable kernels should include - it fixes a real problem affecting users with minimal risk and without introducing new features or architectural changes.
drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c index 8383e2e59be5..eed64b05bc60 100644 --- a/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c +++ b/drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c @@ -926,6 +926,7 @@ static const struct dc_debug_options debug_defaults_drv = { .seamless_boot_odm_combine = true, .enable_legacy_fast_update = true, .using_dml2 = false, + .disable_dsc_power_gate = true, };
static const struct dc_panel_config panel_config_defaults = {