diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3359-drm-amd-powerplay-change-smu_read_sensor-sequence-in.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3359-drm-amd-powerplay-change-smu_read_sensor-sequence-in.patch | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3359-drm-amd-powerplay-change-smu_read_sensor-sequence-in.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3359-drm-amd-powerplay-change-smu_read_sensor-sequence-in.patch new file mode 100644 index 00000000..d931c94f --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3359-drm-amd-powerplay-change-smu_read_sensor-sequence-in.patch @@ -0,0 +1,124 @@ +From 8b33cca7136c5aa019859361d9a15988d656fbbc Mon Sep 17 00:00:00 2001 +From: Kenneth Feng <kenneth.feng@amd.com> +Date: Tue, 23 Jul 2019 12:16:25 +0800 +Subject: [PATCH 3359/4256] drm/amd/powerplay: change smu_read_sensor sequence + in smu + +change the smu_read_sensor sequence to: + +asic specific sensor read -> smu v11 specific sensor read -> smu v11 common sensor read + +Signed-off-by: Kenneth Feng <kenneth.feng@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 3 +++ + drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 4 ++-- + drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 5 ++++- + drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 8 ++++---- + drivers/gpu/drm/amd/powerplay/vega20_ppt.c | 5 ++++- + 5 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +index f21bafb1a0d2..4df7fb6eaf3c 100644 +--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c ++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +@@ -413,6 +413,9 @@ int smu_common_read_sensor(struct smu_context *smu, enum amd_pp_sensors sensor, + struct smu_power_gate *power_gate = &smu_power->power_gate; + int ret = 0; + ++ if(!data || !size) ++ return -EINVAL; ++ + switch (sensor) { + case AMDGPU_PP_SENSOR_STABLE_PSTATE_SCLK: + *((uint32_t *)data) = smu->pstate_sclk; +diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +index f813072ab9e4..ca9b9ec39de8 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +@@ -634,9 +634,9 @@ struct smu_funcs + #define smu_start_thermal_control(smu) \ + ((smu)->funcs->start_thermal_control? (smu)->funcs->start_thermal_control((smu)) : 0) + #define smu_read_sensor(smu, sensor, data, size) \ +- ((smu)->funcs->read_sensor? (smu)->funcs->read_sensor((smu), (sensor), (data), (size)) : 0) +-#define smu_asic_read_sensor(smu, sensor, data, size) \ + ((smu)->ppt_funcs->read_sensor? (smu)->ppt_funcs->read_sensor((smu), (sensor), (data), (size)) : 0) ++#define smu_smc_read_sensor(smu, sensor, data, size) \ ++ ((smu)->funcs->read_sensor? (smu)->funcs->read_sensor((smu), (sensor), (data), (size)) : -EINVAL) + #define smu_get_power_profile_mode(smu, buf) \ + ((smu)->ppt_funcs->get_power_profile_mode ? (smu)->ppt_funcs->get_power_profile_mode((smu), buf) : 0) + #define smu_set_power_profile_mode(smu, param, param_size) \ +diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +index 7398b281cbb0..907035a6e995 100644 +--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +@@ -1365,6 +1365,9 @@ static int navi10_read_sensor(struct smu_context *smu, + struct smu_table_context *table_context = &smu->smu_table; + PPTable_t *pptable = table_context->driver_pptable; + ++ if(!data || !size) ++ return -EINVAL; ++ + switch (sensor) { + case AMDGPU_PP_SENSOR_MAX_FAN_RPM: + *(uint32_t *)data = pptable->FanMaximumRpm; +@@ -1386,7 +1389,7 @@ static int navi10_read_sensor(struct smu_context *smu, + *size = 4; + break; + default: +- return -EINVAL; ++ ret = smu_smc_read_sensor(smu, sensor, data, size); + } + + return ret; +diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +index 91dfae1a2b16..071a63dd4ba2 100644 +--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c ++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +@@ -1227,6 +1227,10 @@ static int smu_v11_0_read_sensor(struct smu_context *smu, + void *data, uint32_t *size) + { + int ret = 0; ++ ++ if(!data || !size) ++ return -EINVAL; ++ + switch (sensor) { + case AMDGPU_PP_SENSOR_GFX_MCLK: + ret = smu_get_current_clk_freq(smu, SMU_UCLK, (uint32_t *)data); +@@ -1249,10 +1253,6 @@ static int smu_v11_0_read_sensor(struct smu_context *smu, + break; + } + +- /* try get sensor data by asic */ +- if (ret) +- ret = smu_asic_read_sensor(smu, sensor, data, size); +- + if (ret) + *size = 0; + +diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +index e28c004e0036..acf075393c13 100644 +--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +@@ -3011,6 +3011,9 @@ static int vega20_read_sensor(struct smu_context *smu, + struct smu_table_context *table_context = &smu->smu_table; + PPTable_t *pptable = table_context->driver_pptable; + ++ if(!data || !size) ++ return -EINVAL; ++ + switch (sensor) { + case AMDGPU_PP_SENSOR_MAX_FAN_RPM: + *(uint32_t *)data = pptable->FanMaximumRpm; +@@ -3034,7 +3037,7 @@ static int vega20_read_sensor(struct smu_context *smu, + *size = 4; + break; + default: +- return -EINVAL; ++ ret = smu_smc_read_sensor(smu, sensor, data, size); + } + + return ret; +-- +2.17.1 + |