Re: [PATCH 6/9] drm/amd/powerplay: clean up the overdrive settings

2020-06-02 Thread Alex Deucher
On Mon, Jun 1, 2020 at 3:31 AM Evan Quan  wrote:
>
> Eliminate the buffer allocation and drop the unnecessary
> overdrive table uploading.
>
> Change-Id: I8ba5383a330e6d5355cea219147500c1b4a43f47
> Signed-off-by: Evan Quan 

Acked-by: Alex Deucher 

> ---
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c|  2 +-
>  .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h|  2 +-
>  drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h |  2 -
>  drivers/gpu/drm/amd/powerplay/navi10_ppt.c| 74 +--
>  drivers/gpu/drm/amd/powerplay/smu_internal.h  |  4 +-
>  drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 20 -
>  6 files changed, 38 insertions(+), 66 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c 
> b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> index b079ac6325d0..9b81b6519a96 100644
> --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> @@ -1215,7 +1215,7 @@ static int smu_smc_table_hw_init(struct smu_context 
> *smu,
> if (ret)
> return ret;
>
> -   ret = smu_set_default_od_settings(smu, initialize);
> +   ret = smu_set_default_od_settings(smu);
> if (ret)
> return ret;
>
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h 
> b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> index 14f4a850b553..4aa63dc79124 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> @@ -480,7 +480,7 @@ struct pptable_funcs {
>  uint32_t *value);
> int (*get_thermal_temperature_range)(struct smu_context *smu, struct 
> smu_temperature_range *range);
> int (*get_uclk_dpm_states)(struct smu_context *smu, uint32_t 
> *clocks_in_khz, uint32_t *num_states);
> -   int (*set_default_od_settings)(struct smu_context *smu, bool 
> initialize);
> +   int (*set_default_od_settings)(struct smu_context *smu);
> int (*set_performance_level)(struct smu_context *smu, enum 
> amd_dpm_forced_level level);
> int (*display_disable_memory_clock_switch)(struct smu_context *smu, 
> bool disable_memory_clock_switch);
> void (*dump_pptable)(struct smu_context *smu);
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h 
> b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
> index 51868dc33238..8d317e05f65b 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
> @@ -258,8 +258,6 @@ int smu_v11_0_set_soft_freq_limited_range(struct 
> smu_context *smu, enum smu_clk_
>
>  int smu_v11_0_override_pcie_parameters(struct smu_context *smu);
>
> -int smu_v11_0_set_default_od_settings(struct smu_context *smu, bool 
> initialize, size_t overdrive_table_size);
> -
>  uint32_t smu_v11_0_get_max_power_limit(struct smu_context *smu);
>
>  int smu_v11_0_set_performance_level(struct smu_context *smu,
> diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c 
> b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
> index db38fb10524d..caa4355b601e 100644
> --- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
> +++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
> @@ -1969,55 +1969,49 @@ static bool navi10_is_baco_supported(struct 
> smu_context *smu)
> return (val & RCC_BIF_STRAP0__STRAP_PX_CAPABLE_MASK) ? true : false;
>  }
>
> -static int navi10_set_default_od_settings(struct smu_context *smu, bool 
> initialize) {
> -   OverDriveTable_t *od_table, *boot_od_table;
> +static int navi10_set_default_od_settings(struct smu_context *smu)
> +{
> +   OverDriveTable_t *od_table =
> +   (OverDriveTable_t *)smu->smu_table.overdrive_table;
> +   OverDriveTable_t *boot_od_table =
> +   (OverDriveTable_t *)smu->smu_table.boot_overdrive_table;
> int ret = 0;
>
> -   ret = smu_v11_0_set_default_od_settings(smu, initialize, 
> sizeof(OverDriveTable_t));
> -   if (ret)
> +   ret = smu_update_table(smu, SMU_TABLE_OVERDRIVE, 0, (void *)od_table, 
> false);
> +   if (ret) {
> +   pr_err("Failed to get overdrive table!\n");
> return ret;
> +   }
>
> -   od_table = (OverDriveTable_t *)smu->smu_table.overdrive_table;
> -   boot_od_table = (OverDriveTable_t 
> *)smu->smu_table.boot_overdrive_table;
> -   if (initialize) {
> -   if (od_table) {
> -   if (!od_table->GfxclkVolt1) {
> -   ret = 
> navi10_overdrive_get_gfx_clk_base_voltage(smu,
> - 
>   &od_table->GfxclkVolt1,
> - 
>   od_table->GfxclkFreq1);
> -   if (ret)
> -   od_table->GfxclkVolt1 = 0;
> -   if (boot_od_table)
> -   boot_od_table->GfxclkVolt1

[PATCH 6/9] drm/amd/powerplay: clean up the overdrive settings

2020-06-01 Thread Evan Quan
Eliminate the buffer allocation and drop the unnecessary
overdrive table uploading.

Change-Id: I8ba5383a330e6d5355cea219147500c1b4a43f47
Signed-off-by: Evan Quan 
---
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c|  2 +-
 .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h|  2 +-
 drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h |  2 -
 drivers/gpu/drm/amd/powerplay/navi10_ppt.c| 74 +--
 drivers/gpu/drm/amd/powerplay/smu_internal.h  |  4 +-
 drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 20 -
 6 files changed, 38 insertions(+), 66 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c 
b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index b079ac6325d0..9b81b6519a96 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -1215,7 +1215,7 @@ static int smu_smc_table_hw_init(struct smu_context *smu,
if (ret)
return ret;
 
-   ret = smu_set_default_od_settings(smu, initialize);
+   ret = smu_set_default_od_settings(smu);
if (ret)
return ret;
 
diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h 
b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
index 14f4a850b553..4aa63dc79124 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
@@ -480,7 +480,7 @@ struct pptable_funcs {
 uint32_t *value);
int (*get_thermal_temperature_range)(struct smu_context *smu, struct 
smu_temperature_range *range);
int (*get_uclk_dpm_states)(struct smu_context *smu, uint32_t 
*clocks_in_khz, uint32_t *num_states);
-   int (*set_default_od_settings)(struct smu_context *smu, bool 
initialize);
+   int (*set_default_od_settings)(struct smu_context *smu);
int (*set_performance_level)(struct smu_context *smu, enum 
amd_dpm_forced_level level);
int (*display_disable_memory_clock_switch)(struct smu_context *smu, 
bool disable_memory_clock_switch);
void (*dump_pptable)(struct smu_context *smu);
diff --git a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h 
b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
index 51868dc33238..8d317e05f65b 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/smu_v11_0.h
@@ -258,8 +258,6 @@ int smu_v11_0_set_soft_freq_limited_range(struct 
smu_context *smu, enum smu_clk_
 
 int smu_v11_0_override_pcie_parameters(struct smu_context *smu);
 
-int smu_v11_0_set_default_od_settings(struct smu_context *smu, bool 
initialize, size_t overdrive_table_size);
-
 uint32_t smu_v11_0_get_max_power_limit(struct smu_context *smu);
 
 int smu_v11_0_set_performance_level(struct smu_context *smu,
diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c 
b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
index db38fb10524d..caa4355b601e 100644
--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
+++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c
@@ -1969,55 +1969,49 @@ static bool navi10_is_baco_supported(struct smu_context 
*smu)
return (val & RCC_BIF_STRAP0__STRAP_PX_CAPABLE_MASK) ? true : false;
 }
 
-static int navi10_set_default_od_settings(struct smu_context *smu, bool 
initialize) {
-   OverDriveTable_t *od_table, *boot_od_table;
+static int navi10_set_default_od_settings(struct smu_context *smu)
+{
+   OverDriveTable_t *od_table =
+   (OverDriveTable_t *)smu->smu_table.overdrive_table;
+   OverDriveTable_t *boot_od_table =
+   (OverDriveTable_t *)smu->smu_table.boot_overdrive_table;
int ret = 0;
 
-   ret = smu_v11_0_set_default_od_settings(smu, initialize, 
sizeof(OverDriveTable_t));
-   if (ret)
+   ret = smu_update_table(smu, SMU_TABLE_OVERDRIVE, 0, (void *)od_table, 
false);
+   if (ret) {
+   pr_err("Failed to get overdrive table!\n");
return ret;
+   }
 
-   od_table = (OverDriveTable_t *)smu->smu_table.overdrive_table;
-   boot_od_table = (OverDriveTable_t *)smu->smu_table.boot_overdrive_table;
-   if (initialize) {
-   if (od_table) {
-   if (!od_table->GfxclkVolt1) {
-   ret = 
navi10_overdrive_get_gfx_clk_base_voltage(smu,
-   
&od_table->GfxclkVolt1,
-   
od_table->GfxclkFreq1);
-   if (ret)
-   od_table->GfxclkVolt1 = 0;
-   if (boot_od_table)
-   boot_od_table->GfxclkVolt1 = 
od_table->GfxclkVolt1;
-   }
-
-   if (!od_table->GfxclkVolt2) {
-   ret = 
navi10_overdrive_get_gfx_clk_base_voltage(smu,
-   
&od_tab