diff options
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.patch | 75 |
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 + |