diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4876-drm-amdgpu-correct-rlc-save-restore-list-initializat.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/4876-drm-amdgpu-correct-rlc-save-restore-list-initializat.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4876-drm-amdgpu-correct-rlc-save-restore-list-initializat.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4876-drm-amdgpu-correct-rlc-save-restore-list-initializat.patch new file mode 100644 index 00000000..d2a76f28 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4876-drm-amdgpu-correct-rlc-save-restore-list-initializat.patch @@ -0,0 +1,62 @@ +From 1e5c45f7fe58bafdb763606b5a4c846d9a79026b Mon Sep 17 00:00:00 2001 +From: Evan Quan <evan.quan@amd.com> +Date: Thu, 5 Jul 2018 11:24:20 +0800 +Subject: [PATCH 4876/5725] drm/amdgpu: correct rlc save restore list + initialization for v2_1 + +The save restore list initialization does not have to be pg guarded. +And for some asic(e.g. Vega12), it does not have cntl/gpm/srm lists. + +Signed-off-by: Evan Quan <evan.quan@amd.com> +Acked-by: Huang Rui <ray.huang@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index cfacec8..b322714 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -659,7 +659,10 @@ static int gfx_v9_0_init_microcode(struct amdgpu_device *adev) + adev->firmware.fw_size += + ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE); + +- if (adev->gfx.rlc.is_rlc_v2_1) { ++ if (adev->gfx.rlc.is_rlc_v2_1 && ++ adev->gfx.rlc.save_restore_list_cntl_size_bytes && ++ adev->gfx.rlc.save_restore_list_gpm_size_bytes && ++ adev->gfx.rlc.save_restore_list_srm_size_bytes) { + info = &adev->firmware.ucode[AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL]; + info->ucode_id = AMDGPU_UCODE_ID_RLC_RESTORE_LIST_CNTL; + info->fw = adev->gfx.rlc_fw; +@@ -2200,8 +2203,14 @@ static void gfx_v9_0_init_pg(struct amdgpu_device *adev) + { + gfx_v9_0_init_csb(adev); + +- if (!adev->gfx.rlc.is_rlc_v2_1) +- return; ++ /* ++ * Rlc save restore list is workable since v2_1. ++ * And it's needed by gfxoff feature. ++ */ ++ if (adev->gfx.rlc.is_rlc_v2_1) { ++ gfx_v9_1_init_rlc_save_restore_list(adev); ++ gfx_v9_0_enable_save_restore_machine(adev); ++ } + + if (adev->pg_flags & (AMD_PG_SUPPORT_GFX_PG | + AMD_PG_SUPPORT_GFX_SMG | +@@ -2209,9 +2218,6 @@ static void gfx_v9_0_init_pg(struct amdgpu_device *adev) + AMD_PG_SUPPORT_CP | + AMD_PG_SUPPORT_GDS | + AMD_PG_SUPPORT_RLC_SMU_HS)) { +- gfx_v9_1_init_rlc_save_restore_list(adev); +- gfx_v9_0_enable_save_restore_machine(adev); +- + WREG32(mmRLC_JUMP_TABLE_RESTORE, + adev->gfx.rlc.cp_table_gpu_addr >> 8); + gfx_v9_0_init_gfx_power_gating(adev); +-- +2.7.4 + |