aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch
new file mode 100644
index 00000000..785a0841
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/4617-drm-amdgpu-fix-GFX10-missing-CSIB-set-v3.patch
@@ -0,0 +1,89 @@
+From 34d7f239a288a1195c3b802a5851f493c6dce4e4 Mon Sep 17 00:00:00 2001
+From: Monk Liu <Monk.Liu@amd.com>
+Date: Tue, 26 Nov 2019 19:33:38 +0800
+Subject: [PATCH 4617/4736] drm/amdgpu: fix GFX10 missing CSIB set(v3)
+
+still need to init csb even for SRIOV
+
+v2:
+drop init_pg() for gfx10 at all since
+PG and GFX off feature will be fully controled
+by RLC and SMU fw for gfx10
+
+v3:
+drop the flush_gpu_tlb lines since we consider
+it is only usefull in emulation
+
+Signed-off-by: Monk Liu <Monk.Liu@amd.com>
+Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 33 ++++----------------------
+ 1 file changed, 5 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
+index fd7ae21eb540..ed630d37c32c 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
+@@ -1769,22 +1769,6 @@ static int gfx_v10_0_init_csb(struct amdgpu_device *adev)
+ return 0;
+ }
+
+-static int gfx_v10_0_init_pg(struct amdgpu_device *adev)
+-{
+- int i;
+- int r;
+-
+- r = gfx_v10_0_init_csb(adev);
+- if (r)
+- return r;
+-
+- for (i = 0; i < adev->num_vmhubs; i++)
+- amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0);
+-
+- /* TODO: init power gating */
+- return 0;
+-}
+-
+ void gfx_v10_0_rlc_stop(struct amdgpu_device *adev)
+ {
+ u32 tmp = RREG32_SOC15(GC, 0, mmRLC_CNTL);
+@@ -1877,21 +1861,16 @@ static int gfx_v10_0_rlc_resume(struct amdgpu_device *adev)
+ {
+ int r;
+
+- if (amdgpu_sriov_vf(adev))
+- return 0;
+-
+ if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
+- r = gfx_v10_0_wait_for_rlc_autoload_complete(adev);
+- if (r)
+- return r;
+
+- r = gfx_v10_0_init_pg(adev);
++ r = gfx_v10_0_wait_for_rlc_autoload_complete(adev);
+ if (r)
+ return r;
+
+- /* enable RLC SRM */
+- gfx_v10_0_rlc_enable_srm(adev);
++ gfx_v10_0_init_csb(adev);
+
++ if (!amdgpu_sriov_vf(adev)) /* enable RLC SRM */
++ gfx_v10_0_rlc_enable_srm(adev);
+ } else {
+ adev->gfx.rlc.funcs->stop(adev);
+
+@@ -1913,9 +1892,7 @@ static int gfx_v10_0_rlc_resume(struct amdgpu_device *adev)
+ return r;
+ }
+
+- r = gfx_v10_0_init_pg(adev);
+- if (r)
+- return r;
++ gfx_v10_0_init_csb(adev);
+
+ adev->gfx.rlc.funcs->start(adev);
+
+--
+2.17.1
+