diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3663-drm-amd-powerplay-replace-smu-table_count-with-SMU_T.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3663-drm-amd-powerplay-replace-smu-table_count-with-SMU_T.patch | 186 |
1 files changed, 186 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3663-drm-amd-powerplay-replace-smu-table_count-with-SMU_T.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3663-drm-amd-powerplay-replace-smu-table_count-with-SMU_T.patch new file mode 100644 index 00000000..af5ce928 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3663-drm-amd-powerplay-replace-smu-table_count-with-SMU_T.patch @@ -0,0 +1,186 @@ +From 0fdf4a3d20907052c8d42dd4782d72f759ed3da5 Mon Sep 17 00:00:00 2001 +From: Kevin Wang <kevin1.wang@amd.com> +Date: Tue, 3 Sep 2019 16:02:33 +0800 +Subject: [PATCH 3663/4256] drm/amd/powerplay: replace smu->table_count with + SMU_TABLE_COUNT in smu + +fix bellow patch issue: +drm/amd/powerplay: introduce smu table id type to handle the smu table +for each asic +---- +"This patch introduces new smu table type, it's to handle the + different smu table + defines for each asic with the same smu ip." + +before: +use smu->table_count to represent the actual table count in smc firmware +use actual table count to check smu function parameter about smu table +after: +use logic table count "SMU_TABLE_COUNT" to check function parameter +because table id already mapped in smu driver, +and smu function will use logic table id not actual table id to check func parameter. + +Signed-off-by: Kevin Wang <kevin1.wang@amd.com> +Reviewed-by: Evan Quan <evan.quan@amd.com> +Acked-by: Huang Rui <ray.huang@amd.com> +--- + drivers/gpu/drm/amd/powerplay/amdgpu_smu.c | 13 ++++--------- + drivers/gpu/drm/amd/powerplay/arcturus_ppt.c | 1 - + drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 1 - + drivers/gpu/drm/amd/powerplay/navi10_ppt.c | 1 - + drivers/gpu/drm/amd/powerplay/renoir_ppt.c | 1 - + drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 5 ++--- + drivers/gpu/drm/amd/powerplay/smu_v12_0.c | 4 ++-- + drivers/gpu/drm/amd/powerplay/vega20_ppt.c | 1 - + 8 files changed, 8 insertions(+), 19 deletions(-) + +diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +index 797441894c2f..590d0012bc22 100644 +--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c ++++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c +@@ -436,7 +436,7 @@ int smu_update_table(struct smu_context *smu, enum smu_table_id table_index, int + int ret = 0; + int table_id = smu_table_get_index(smu, table_index); + +- if (!table_data || table_id >= smu_table->table_count || table_id < 0) ++ if (!table_data || table_id >= SMU_TABLE_COUNT || table_id < 0) + return -EINVAL; + + table = &smu_table->tables[table_index]; +@@ -914,14 +914,10 @@ static int smu_init_fb_allocations(struct smu_context *smu) + struct amdgpu_device *adev = smu->adev; + struct smu_table_context *smu_table = &smu->smu_table; + struct smu_table *tables = smu_table->tables; +- uint32_t table_count = smu_table->table_count; + uint32_t i = 0; + int32_t ret = 0; + +- if (table_count <= 0) +- return -EINVAL; +- +- for (i = 0 ; i < table_count; i++) { ++ for (i = 0; i < SMU_TABLE_COUNT; i++) { + if (tables[i].size == 0) + continue; + ret = amdgpu_bo_create_kernel(adev, +@@ -952,13 +948,12 @@ static int smu_fini_fb_allocations(struct smu_context *smu) + { + struct smu_table_context *smu_table = &smu->smu_table; + struct smu_table *tables = smu_table->tables; +- uint32_t table_count = smu_table->table_count; + uint32_t i = 0; + +- if (table_count == 0 || tables == NULL) ++ if (!tables) + return 0; + +- for (i = 0 ; i < table_count; i++) { ++ for (i = 0; i < SMU_TABLE_COUNT; i++) { + if (tables[i].size == 0) + continue; + amdgpu_bo_free_kernel(&tables[i].bo, +diff --git a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c +index 595b1365c008..e7ec8d583ea0 100644 +--- a/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/arcturus_ppt.c +@@ -1934,5 +1934,4 @@ void arcturus_set_ppt_funcs(struct smu_context *smu) + struct smu_table_context *smu_table = &smu->smu_table; + + smu->ppt_funcs = &arcturus_ppt_funcs; +- smu_table->table_count = TABLE_COUNT; + } +diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +index 320ac20146fd..32cd2074178d 100644 +--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h ++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h +@@ -259,7 +259,6 @@ struct smu_table_context + struct smu_bios_boot_up_values boot_values; + void *driver_pptable; + struct smu_table *tables; +- uint32_t table_count; + struct smu_table memory_pool; + uint8_t thermal_controller_type; + uint16_t TDPODLimit; +diff --git a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +index 744b7501c34d..e3add8b59291 100644 +--- a/drivers/gpu/drm/amd/powerplay/navi10_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/navi10_ppt.c +@@ -1633,5 +1633,4 @@ void navi10_set_ppt_funcs(struct smu_context *smu) + struct smu_table_context *smu_table = &smu->smu_table; + + smu->ppt_funcs = &navi10_ppt_funcs; +- smu_table->table_count = TABLE_COUNT; + } +diff --git a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c +index 2a6da546fb55..872598c19a5d 100644 +--- a/drivers/gpu/drm/amd/powerplay/renoir_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/renoir_ppt.c +@@ -191,5 +191,4 @@ void renoir_set_ppt_funcs(struct smu_context *smu) + + smu->ppt_funcs = &renoir_ppt_funcs; + smu->smc_if_version = SMU12_DRIVER_IF_VERSION; +- smu_table->table_count = TABLE_COUNT; + } +diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +index 117988eb7557..e85f0c8c5dd7 100644 +--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c ++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c +@@ -439,7 +439,7 @@ static int smu_v11_0_init_smc_tables(struct smu_context *smu) + struct smu_table *tables = NULL; + int ret = 0; + +- if (smu_table->tables || smu_table->table_count == 0) ++ if (smu_table->tables) + return -EINVAL; + + tables = kcalloc(SMU_TABLE_COUNT, sizeof(struct smu_table), +@@ -465,13 +465,12 @@ static int smu_v11_0_fini_smc_tables(struct smu_context *smu) + struct smu_table_context *smu_table = &smu->smu_table; + int ret = 0; + +- if (!smu_table->tables || smu_table->table_count == 0) ++ if (!smu_table->tables) + return -EINVAL; + + kfree(smu_table->tables); + kfree(smu_table->metrics_table); + smu_table->tables = NULL; +- smu_table->table_count = 0; + smu_table->metrics_table = NULL; + smu_table->metrics_time = 0; + +diff --git a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c +index 9d2280ca1f4b..24274c9bb87d 100644 +--- a/drivers/gpu/drm/amd/powerplay/smu_v12_0.c ++++ b/drivers/gpu/drm/amd/powerplay/smu_v12_0.c +@@ -275,7 +275,7 @@ static int smu_v12_0_init_smc_tables(struct smu_context *smu) + struct smu_table_context *smu_table = &smu->smu_table; + struct smu_table *tables = NULL; + +- if (smu_table->tables || smu_table->table_count == 0) ++ if (smu_table->tables) + return -EINVAL; + + tables = kcalloc(SMU_TABLE_COUNT, sizeof(struct smu_table), +@@ -292,7 +292,7 @@ static int smu_v12_0_fini_smc_tables(struct smu_context *smu) + { + struct smu_table_context *smu_table = &smu->smu_table; + +- if (!smu_table->tables || smu_table->table_count == 0) ++ if (!smu_table->tables) + return -EINVAL; + + kfree(smu_table->clocks_table); +diff --git a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +index 899bf96b23e1..68548ba9b6ea 100644 +--- a/drivers/gpu/drm/amd/powerplay/vega20_ppt.c ++++ b/drivers/gpu/drm/amd/powerplay/vega20_ppt.c +@@ -3189,5 +3189,4 @@ void vega20_set_ppt_funcs(struct smu_context *smu) + struct smu_table_context *smu_table = &smu->smu_table; + + smu->ppt_funcs = &vega20_ppt_funcs; +- smu_table->table_count = TABLE_COUNT; + } +-- +2.17.1 + |