FAILED: patch "[PATCH] drm/amd/display: Determine IPS mode by ASIC and PMFW versions" failed to apply to 6.10-stable tree
[email protected]
maintainerThe patch below does not apply to the 6.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.10.y
git checkout FETCH_HEAD
git cherry-pick -x 65444581a4aecf0e96b4691bb20fc75c602f5863
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024090802-spill-spooky-94c0@gregkh' --subject-prefix 'PATCH 6.10.y' HEAD^..
Possible dependencies:
65444581a4ae ("drm/amd/display: Determine IPS mode by ASIC and PMFW versions") 234e94555800 ("drm/amd/display: Enable copying of bounding box data from VBIOS DMUB") afca033f10d3 ("drm/amd/display: Add periodic detection for IPS") 05c5ffaac770 ("drm/amd/display: gpuvm handling in DML21")9ba971b25316 ("drm/amd/display: Re-enable IPS2 for static screen") 70839da63605 ("drm/amd/display: Add new DCN401 sources")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 65444581a4aecf0e96b4691bb20fc75c602f5863 Mon Sep 17 00:00:00 2001
From: Leo Li <[email protected]>
Date: Tue, 27 Aug 2024 11:29:53 -0400
Subject: [PATCH] drm/amd/display: Determine IPS mode by ASIC and PMFW versions
[Why]
DCN IPS interoperates with other system idle power features, such as Zstates.
On DCN35, there is a known issue where system Z8 + DCN IPS2 causes a hard hang. We observe this on systems where the SBIOS allows Z8.
Though there is a SBIOS fix, there's no guarantee that users will get it any time soon, or even install it. A workaround is needed to prevent this from rearing its head in the wild.
[How]
For DCN35, check the pmfw version to determine whether the SBIOS has the fix. If not, set IPS1+RCG as the deepest possible state in all cases except for s0ix and display off (DPMS). Otherwise, enable all IPS
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +25 -1
@@ -1752,6 +1752,30 @@ static struct dml2_soc_bb *dm_dmub_get_vbios_bounding_box(struct amdgpu_device *return bb; } +static enum dmub_ips_disable_type dm_get_default_ips_mode ( +struct amdgpu_device *adev) +{ +/* +* On DCN35 systems with Z8 enabled, it's possible for IPS2 + Z8 to +* cause a hard hang. A fix exists for newer PMFW. +* +* As a workaround, for non-fixed PMFW, force IPS1+RCG as the deepest +* IPS state in all cases, except for s0ix and all displays off (DPMS), +* where IPS2 is allowed. +* +* When checking pmfw version, use the major and minor only. +*/ +if (amdgpu_ip_version (adev,DCE_HWIP ,0 ) ==IP_VERSION (3 ,5 ,0 ) && + (adev->pm.fw_version &0x00FFFF00 ) <0x005D6300 ) +return DMUB_IPS_RCG_IN_ACTIVE_IPS2_IN_OFF ; + +if (amdgpu_ip_version (adev,DCE_HWIP ,0 ) >=IP_VERSION (3 ,5 ,0 )) +return DMUB_IPS_ENABLE ; + +/* ASICs older than DCN35 do not have IPSs */ +return DMUB_IPS_DISABLE_ALL ; +} +static int amdgpu_dm_init (struct amdgpu_device *adev) {struct dc_init_data init_data;
@@ -1863,7 +1887,7 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)if (amdgpu_dc_debug_mask &DC_DISABLE_IPS ) init_data.flags.disable_ips =DMUB_IPS_DISABLE_ALL ;else - init_data.flags.disable_ips =DMUB_IPS_ENABLE ; + init_data.flags.disable_ips =dm_get_default_ips_mode (adev); init_data.flags.disable_ips_in_vpb =0 ;