aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch84
1 files changed, 84 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch
new file mode 100644
index 00000000..9f5aea1f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2210-drm-amdgpu-load-smc-ucode-at-first-with-psp-while-rl.patch
@@ -0,0 +1,84 @@
+From 95efe344162f778ff8fae1efb0395a375981b91b Mon Sep 17 00:00:00 2001
+From: Huang Rui <ray.huang@amd.com>
+Date: Thu, 14 Feb 2019 19:08:22 +0800
+Subject: [PATCH 2210/2940] drm/amdgpu: load smc ucode at first with psp while
+ rlc auto load is supported
+
+This patch loades smc ucode at first with psp while rlc auto load is supported
+on navi10.
+
+Signed-off-by: Huang Rui <ray.huang@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 35 ++++++++++++++++++++-----
+ 1 file changed, 28 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+index 164fcf9f1c64..32509c8c3227 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
+@@ -922,19 +922,45 @@ static int psp_prep_load_ip_fw_cmd_buf(struct amdgpu_firmware_info *ucode,
+ return ret;
+ }
+
++static int psp_execute_np_fw_load(struct psp_context *psp,
++ struct amdgpu_firmware_info *ucode)
++{
++ int ret = 0;
++
++ ret = psp_prep_load_ip_fw_cmd_buf(ucode, psp->cmd);
++ if (ret)
++ return ret;
++
++ ret = psp_cmd_submit_buf(psp, ucode, psp->cmd,
++ psp->fence_buf_mc_addr);
++
++ return ret;
++}
++
+ static int psp_np_fw_load(struct psp_context *psp)
+ {
+ int i, ret;
+ struct amdgpu_firmware_info *ucode;
+ struct amdgpu_device* adev = psp->adev;
+
++ if (psp->autoload_supported) {
++ ucode = &adev->firmware.ucode[AMDGPU_UCODE_ID_SMC];
++ if (!ucode->fw)
++ goto out;
++
++ ret = psp_execute_np_fw_load(psp, ucode);
++ if (ret)
++ return ret;
++ }
++
++out:
+ for (i = 0; i < adev->firmware.max_ucodes; i++) {
+ ucode = &adev->firmware.ucode[i];
+ if (!ucode->fw)
+ continue;
+
+ if (ucode->ucode_id == AMDGPU_UCODE_ID_SMC &&
+- psp_smu_reload_quirk(psp))
++ (psp_smu_reload_quirk(psp) || psp->autoload_supported))
+ continue;
+ if (amdgpu_sriov_vf(adev) &&
+ (ucode->ucode_id == AMDGPU_UCODE_ID_SDMA0
+@@ -948,12 +974,7 @@ static int psp_np_fw_load(struct psp_context *psp)
+ /* skip mec JT when autoload is enabled */
+ continue;
+
+- ret = psp_prep_load_ip_fw_cmd_buf(ucode, psp->cmd);
+- if (ret)
+- return ret;
+-
+- ret = psp_cmd_submit_buf(psp, ucode, psp->cmd,
+- psp->fence_buf_mc_addr);
++ ret = psp_execute_np_fw_load(psp, ucode);
+ if (ret)
+ return ret;
+
+--
+2.17.1
+