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