diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1902-drm-amdgpu-move-amdgpu_ucode_init_bo-to-amdgpu_devic.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1902-drm-amdgpu-move-amdgpu_ucode_init_bo-to-amdgpu_devic.patch | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1902-drm-amdgpu-move-amdgpu_ucode_init_bo-to-amdgpu_devic.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1902-drm-amdgpu-move-amdgpu_ucode_init_bo-to-amdgpu_devic.patch new file mode 100644 index 00000000..99c4fa23 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1902-drm-amdgpu-move-amdgpu_ucode_init_bo-to-amdgpu_devic.patch @@ -0,0 +1,101 @@ +From 7a93d328f4604a6da8556580be3f62b41485d890 Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Fri, 22 Sep 2017 18:03:59 +0800 +Subject: [PATCH 1902/4131] drm/amdgpu: move amdgpu_ucode_init_bo to + amdgpu_device.c + +Change-Id: I1406cd473924301dbb1afbedc38a296fa90383bc +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++++++++ + drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c | 5 ----- + drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 9 --------- + 3 files changed, 8 insertions(+), 14 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +index 01a244d..cda0a88 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +@@ -1631,6 +1631,7 @@ static int amdgpu_init(struct amdgpu_device *adev) + return r; + } + adev->ip_blocks[i].status.sw = true; ++ + /* need to do gmc hw init early so we can allocate gpu mem */ + if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { + r = amdgpu_vram_scratch_init(adev); +@@ -1661,6 +1662,11 @@ static int amdgpu_init(struct amdgpu_device *adev) + } + } + ++ mutex_lock(&adev->firmware.mutex); ++ if (amdgpu_ucode_init_bo(adev)) ++ adev->firmware.load_type = AMDGPU_FW_LOAD_DIRECT; ++ mutex_unlock(&adev->firmware.mutex); ++ + for (i = 0; i < adev->num_ip_blocks; i++) { + if (!adev->ip_blocks[i].status.sw) + continue; +@@ -1796,6 +1802,8 @@ static int amdgpu_fini(struct amdgpu_device *adev) + + adev->ip_blocks[i].status.hw = false; + } ++ if (adev->firmware.load_type != AMDGPU_FW_LOAD_DIRECT) ++ amdgpu_ucode_fini_bo(adev); + + for (i = adev->num_ip_blocks - 1; i >= 0; i--) { + if (!adev->ip_blocks[i].status.sw) +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c +index 1ad6323..c05e5a8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_powerplay.c +@@ -174,8 +174,6 @@ static int amdgpu_pp_hw_init(void *handle) + int ret = 0; + struct amdgpu_device *adev = (struct amdgpu_device *)handle; + +- if (adev->pp_enabled && adev->firmware.load_type == AMDGPU_FW_LOAD_SMU) +- amdgpu_ucode_init_bo(adev); + + if (adev->powerplay.ip_funcs->hw_init) + ret = adev->powerplay.ip_funcs->hw_init( +@@ -201,9 +199,6 @@ static int amdgpu_pp_hw_fini(void *handle) + ret = adev->powerplay.ip_funcs->hw_fini( + adev->powerplay.pp_handle); + +- if (adev->pp_enabled && adev->firmware.load_type == AMDGPU_FW_LOAD_SMU) +- amdgpu_ucode_fini_bo(adev); +- + return ret; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +index fe1252c..9d4abbc 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +@@ -416,13 +416,6 @@ static int psp_hw_init(void *handle) + return 0; + + mutex_lock(&adev->firmware.mutex); +- /* +- * This sequence is just used on hw_init only once, no need on +- * resume. +- */ +- ret = amdgpu_ucode_init_bo(adev); +- if (ret) +- goto failed; + + ret = psp_load_fw(adev); + if (ret) { +@@ -447,8 +440,6 @@ static int psp_hw_fini(void *handle) + if (adev->firmware.load_type != AMDGPU_FW_LOAD_PSP) + return 0; + +- amdgpu_ucode_fini_bo(adev); +- + psp_ring_destroy(psp, PSP_RING_TYPE__KM); + + amdgpu_bo_free_kernel(&psp->tmr_bo, &psp->tmr_mc_addr, &psp->tmr_buf); +-- +2.7.4 + |