aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch
new file mode 100644
index 00000000..a747de58
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3983-drm-amd-powerplay-bypass-dpm_context-null-pointer-ch.patch
@@ -0,0 +1,75 @@
+From f4006b640275b8f5646ff61198594b7ed441b93d Mon Sep 17 00:00:00 2001
+From: Prike Liang <Prike.Liang@amd.com>
+Date: Wed, 18 Sep 2019 15:11:34 +0800
+Subject: [PATCH 3983/4256] drm/amd/powerplay: bypass dpm_context null pointer
+ check guard for some smu series
+
+For now APU has no smu_dpm_context structure for containing default/current related dpm tables,
+thus will needn't initialize smu_dpm_context to aviod APU null pointer issue.
+
+Signed-off-by: Prike Liang <Prike.Liang@amd.com>
+Reviewed-by: Kevin Wang <kevin1.wang@amd.com>
+Reviewed-by: Evan Quan <evan.quan@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 7 ++++---
+ drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 1 +
+ drivers/gpu/drm/amd/powerplay/renoir_ppt.c | 1 +
+ 3 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+index 3d1bfa8ea7c2..a307d4a52e87 100644
+--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+@@ -1559,7 +1559,8 @@ static int smu_enable_umd_pstate(void *handle,
+
+ struct smu_context *smu = (struct smu_context*)(handle);
+ struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
+- if (!smu->pm_enabled || !smu_dpm_ctx->dpm_context)
++
++ if (!smu->is_apu && (!smu->pm_enabled || !smu_dpm_ctx->dpm_context))
+ return -EINVAL;
+
+ if (!(smu_dpm_ctx->dpm_level & profile_mode_mask)) {
+@@ -1757,7 +1758,7 @@ enum amd_dpm_forced_level smu_get_performance_level(struct smu_context *smu)
+ struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
+ enum amd_dpm_forced_level level;
+
+- if (!smu_dpm_ctx->dpm_context)
++ if (!smu->is_apu && !smu_dpm_ctx->dpm_context)
+ return -EINVAL;
+
+ mutex_lock(&(smu->mutex));
+@@ -1772,7 +1773,7 @@ int smu_force_performance_level(struct smu_context *smu, enum amd_dpm_forced_lev
+ struct smu_dpm_context *smu_dpm_ctx = &(smu->smu_dpm);
+ int ret = 0;
+
+- if (!smu_dpm_ctx->dpm_context)
++ if (!smu->is_apu && !smu_dpm_ctx->dpm_context)
+ return -EINVAL;
+
+ ret = smu_enable_umd_pstate(smu, &level);
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+index bc4b73e0718e..f1b378965551 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+@@ -388,6 +388,7 @@ struct smu_context
+ uint32_t power_profile_mode;
+ uint32_t default_power_profile_mode;
+ bool pm_enabled;
++ bool is_apu;
+
+ uint32_t smc_if_version;
+
+diff --git a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
+index 9311b6acc34d..0985da2ed922 100644
+--- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
++++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c
+@@ -319,4 +319,5 @@ void renoir_set_ppt_funcs(struct smu_context *smu)
+ {
+ smu->ppt_funcs = &renoir_ppt_funcs;
+ smu->smc_if_version = SMU12_DRIVER_IF_VERSION;
++ smu->is_apu = true;
+ }
+--
+2.17.1
+