From 049355129ce70beacb50f83ac3cf961489c881ef Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: May 17 2023 19:15:55 +0000 Subject: drm/amd/pm: parse pp_handle under appropriate conditions (bsc#1012628). --- diff --git a/patches.kernel.org/6.3.3-204-drm-amd-pm-parse-pp_handle-under-appropriate-co.patch b/patches.kernel.org/6.3.3-204-drm-amd-pm-parse-pp_handle-under-appropriate-co.patch new file mode 100644 index 0000000..c4c3f07 --- /dev/null +++ b/patches.kernel.org/6.3.3-204-drm-amd-pm-parse-pp_handle-under-appropriate-co.patch @@ -0,0 +1,65 @@ +From: Guchun Chen +Date: Fri, 5 May 2023 13:20:11 +0800 +Subject: [PATCH] drm/amd/pm: parse pp_handle under appropriate conditions +References: bsc#1012628 +Patch-mainline: 6.3.3 +Git-commit: 58d9b9a14b47c2a3da6effcbb01607ad7edc0275 + +commit 58d9b9a14b47c2a3da6effcbb01607ad7edc0275 upstream. + +amdgpu_dpm_is_overdrive_supported is a common API across all +asics, so we should cast pp_handle into correct structure +under different power frameworks. + +v2: using return directly to simplify code +v3: SI asic does not carry od_enabled member in pp_handle, and update Fixes tag + +Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2541 +Fixes: eb4900aa4c49 ("drm/amdgpu: Fix kernel NULL pointer dereference in dpm functions") +Suggested-by: Mario Limonciello +Signed-off-by: Guchun Chen +Reviewed-by: Mario Limonciello +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +Signed-off-by: Jiri Slaby +--- + drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c +index 6e79d335..29720d0b 100644 +--- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c ++++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c +@@ -1432,15 +1432,21 @@ int amdgpu_dpm_get_smu_prv_buf_details(struct amdgpu_device *adev, + + int amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev) + { +- struct pp_hwmgr *hwmgr = adev->powerplay.pp_handle; +- struct smu_context *smu = adev->powerplay.pp_handle; ++ if (is_support_sw_smu(adev)) { ++ struct smu_context *smu = adev->powerplay.pp_handle; ++ ++ return (smu->od_enabled || smu->is_apu); ++ } else { ++ struct pp_hwmgr *hwmgr; + +- if ((is_support_sw_smu(adev) && smu->od_enabled) || +- (is_support_sw_smu(adev) && smu->is_apu) || +- (!is_support_sw_smu(adev) && hwmgr->od_enabled)) +- return true; ++ /* SI asic does not carry od_enabled */ ++ if (adev->family == AMDGPU_FAMILY_SI) ++ return false; + +- return false; ++ hwmgr = (struct pp_hwmgr *)adev->powerplay.pp_handle; ++ ++ return hwmgr->od_enabled; ++ } + } + + int amdgpu_dpm_set_pp_table(struct amdgpu_device *adev, +-- +2.35.3 + diff --git a/series.conf b/series.conf index 5561f86..4d1f756 100644 --- a/series.conf +++ b/series.conf @@ -937,6 +937,7 @@ patches.kernel.org/6.3.3-201-drm-amdgpu-change-gfx-11.0.4-external_id-range.patch patches.kernel.org/6.3.3-202-drm-amdgpu-Fix-vram-recover-doesn-t-work-after-.patch patches.kernel.org/6.3.3-203-drm-amd-display-Enforce-60us-prefetch-for-200Mh.patch + patches.kernel.org/6.3.3-204-drm-amd-pm-parse-pp_handle-under-appropriate-co.patch ######################################################## # Build fixes that apply to the vanilla kernel too.