aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch
new file mode 100644
index 00000000..699a5eda
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/1374-drm-amd-powerplay-implement-notify_memory_pool_locat.patch
@@ -0,0 +1,84 @@
+From 5143435a0b90553da2e205b07856452dd07ca727 Mon Sep 17 00:00:00 2001
+From: Kevin Wang <Kevin1.Wang@amd.com>
+Date: Tue, 18 Dec 2018 14:06:09 +0800
+Subject: [PATCH 1374/2940] drm/amd/powerplay: implement
+ notify_memory_pool_location function for smu11
+
+This patch implements the notify_memory_pool_location function to send memory
+address to smc for dram logging.
+
+Signed-off-by: Kevin Wang <Kevin1.Wang@amd.com>
+Reviewed-by: Huang Rui <ray.huang@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 47 +++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+index adae5a70368e..810435d6f300 100644
+--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+@@ -439,6 +439,52 @@ static int smu_v11_0_get_clk_info_from_vbios(struct smu_context *smu)
+ return 0;
+ }
+
++static int smu_v11_0_notify_memory_pool_location(struct smu_context *smu)
++{
++ struct smu_table_context *smu_table = &smu->smu_table;
++ struct smu_table *memory_pool = &smu_table->memory_pool;
++ int ret = 0;
++ uint64_t address;
++ uint32_t address_low, address_high;
++
++ if (memory_pool->size == 0 || memory_pool->cpu_addr == NULL)
++ return ret;
++
++ address = (uint64_t)memory_pool->cpu_addr;
++ address_high = (uint32_t)upper_32_bits(address);
++ address_low = (uint32_t)lower_32_bits(address);
++
++ ret = smu_send_smc_msg_with_param(smu,
++ PPSMC_MSG_SetSystemVirtualDramAddrHigh,
++ address_high);
++ if (ret)
++ return ret;
++ ret = smu_send_smc_msg_with_param(smu,
++ PPSMC_MSG_SetSystemVirtualDramAddrLow,
++ address_low);
++ if (ret)
++ return ret;
++
++ address = memory_pool->mc_address;
++ address_high = (uint32_t)upper_32_bits(address);
++ address_low = (uint32_t)lower_32_bits(address);
++
++ ret = smu_send_smc_msg_with_param(smu, PPSMC_MSG_DramLogSetDramAddrHigh,
++ address_high);
++ if (ret)
++ return ret;
++ ret = smu_send_smc_msg_with_param(smu, PPSMC_MSG_DramLogSetDramAddrLow,
++ address_low);
++ if (ret)
++ return ret;
++ ret = smu_send_smc_msg_with_param(smu, PPSMC_MSG_DramLogSetDramSize,
++ (uint32_t)memory_pool->size);
++ if (ret)
++ return ret;
++
++ return ret;
++}
++
+ static const struct smu_funcs smu_v11_0_funcs = {
+ .init_microcode = smu_v11_0_init_microcode,
+ .load_microcode = smu_v11_0_load_microcode,
+@@ -453,6 +499,7 @@ static const struct smu_funcs smu_v11_0_funcs = {
+ .fini_power = smu_v11_0_fini_power,
+ .get_vbios_bootup_values = smu_v11_0_get_vbios_bootup_values,
+ .get_clk_info_from_vbios = smu_v11_0_get_clk_info_from_vbios,
++ .notify_memory_pool_location = smu_v11_0_notify_memory_pool_location,
+ };
+
+ void smu_v11_0_set_smu_funcs(struct smu_context *smu)
+--
+2.17.1
+