diff options
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.patch | 84 |
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 + |