aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch197
1 files changed, 197 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch
new file mode 100644
index 00000000..de5f585b
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3661-drm-amdgpu-change-amdgpu_ttm_set_active_vram_size.patch
@@ -0,0 +1,197 @@
+From a7bd4f0b26a84f987ce0730f3813f4a7f20ac5aa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
+Date: Thu, 1 Mar 2018 11:01:52 +0100
+Subject: [PATCH 3661/4131] drm/amdgpu: change amdgpu_ttm_set_active_vram_size
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Instead of setting the active VRAM size directly provide a the info if
+we can use the buffer functions or not.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Acked-by: Chunming zhou <david1.zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 23 +++++++++++++++++------
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 3 ++-
+ drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 4 ++--
+ drivers/gpu/drm/amd/amdgpu/si_dma.c | 4 ++--
+ 7 files changed, 29 insertions(+), 17 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index 1638a09..fa87a00 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -1647,7 +1647,7 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
+ adev->gmc.visible_vram_size = vis_vram_limit;
+
+ /* Change the size here instead of the init above so only lpfn is affected */
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+ #ifdef CONFIG_64BIT
+ adev->mman.aper_base_kaddr = ioremap_wc(adev->gmc.aper_base,
+ adev->gmc.visible_vram_size);
+@@ -1773,17 +1773,28 @@ void amdgpu_ttm_fini(struct amdgpu_device *adev)
+ DRM_INFO("amdgpu: ttm finalized\n");
+ }
+
+-/* this should only be called at bootup or when userspace
+- * isn't running */
+-void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size)
++/**
++ * amdgpu_ttm_set_buffer_funcs_status - enable/disable use of buffer functions
++ *
++ * @adev: amdgpu_device pointer
++ * @enable: true when we can use buffer functions.
++ *
++ * Enable/disable use of buffer functions during suspend/resume. This should
++ * only be called at bootup or when userspace isn't running.
++ */
++void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev, bool enable)
+ {
+- struct ttm_mem_type_manager *man;
++ struct ttm_mem_type_manager *man = &adev->mman.bdev.man[TTM_PL_VRAM];
++ uint64_t size;
+
+ if (!adev->mman.initialized)
+ return;
+
+- man = &adev->mman.bdev.man[TTM_PL_VRAM];
+ /* this just adjusts TTM size idea, which sets lpfn to the correct value */
++ if (enable)
++ size = adev->gmc.real_vram_size;
++ else
++ size = adev->gmc.visible_vram_size;
+ man->size = size >> PAGE_SHIFT;
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+index e3c8dc6..c866eff 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
+@@ -82,7 +82,8 @@ uint64_t amdgpu_vram_mgr_vis_usage(struct ttm_mem_type_manager *man);
+
+ int amdgpu_ttm_init(struct amdgpu_device *adev);
+ void amdgpu_ttm_fini(struct amdgpu_device *adev);
+-void amdgpu_ttm_set_active_vram_size(struct amdgpu_device *adev, u64 size);
++void amdgpu_ttm_set_buffer_funcs_status(struct amdgpu_device *adev,
++ bool enable);
+
+ int amdgpu_copy_buffer(struct amdgpu_ring *ring, uint64_t src_offset,
+ uint64_t dst_offset, uint32_t byte_count,
+diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+index 55868fc..c8144d1 100644
+--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
++++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+@@ -317,7 +317,7 @@ static void cik_sdma_gfx_stop(struct amdgpu_device *adev)
+
+ if ((adev->mman.buffer_funcs_ring == sdma0) ||
+ (adev->mman.buffer_funcs_ring == sdma1))
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+
+ for (i = 0; i < adev->sdma.num_instances; i++) {
+ rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
+@@ -517,7 +517,7 @@ static int cik_sdma_gfx_resume(struct amdgpu_device *adev)
+ }
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, true);
+ }
+
+ return 0;
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+index 722f43b..702b949 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+@@ -346,7 +346,7 @@ static void sdma_v2_4_gfx_stop(struct amdgpu_device *adev)
+
+ if ((adev->mman.buffer_funcs_ring == sdma0) ||
+ (adev->mman.buffer_funcs_ring == sdma1))
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+
+ for (i = 0; i < adev->sdma.num_instances; i++) {
+ rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
+@@ -491,7 +491,7 @@ static int sdma_v2_4_gfx_resume(struct amdgpu_device *adev)
+ }
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, true);
+ }
+
+ return 0;
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+index 13c5168..b9d857d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+@@ -518,7 +518,7 @@ static void sdma_v3_0_gfx_stop(struct amdgpu_device *adev)
+
+ if ((adev->mman.buffer_funcs_ring == sdma0) ||
+ (adev->mman.buffer_funcs_ring == sdma1))
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+
+ for (i = 0; i < adev->sdma.num_instances; i++) {
+ rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]);
+@@ -758,7 +758,7 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
+ }
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, true);
+ }
+
+ return 0;
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+index 26bd1e7..d8d9fd6 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+@@ -436,7 +436,7 @@ static void sdma_v4_0_gfx_stop(struct amdgpu_device *adev)
+
+ if ((adev->mman.buffer_funcs_ring == sdma0) ||
+ (adev->mman.buffer_funcs_ring == sdma1))
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+
+ for (i = 0; i < adev->sdma.num_instances; i++) {
+ rb_cntl = RREG32(sdma_v4_0_get_reg_offset(adev, i, mmSDMA0_GFX_RB_CNTL));
+@@ -678,7 +678,7 @@ static int sdma_v4_0_gfx_resume(struct amdgpu_device *adev)
+ }
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, true);
+
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c
+index 6e25d91..93a7773 100644
+--- a/drivers/gpu/drm/amd/amdgpu/si_dma.c
++++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c
+@@ -135,7 +135,7 @@ static void si_dma_stop(struct amdgpu_device *adev)
+ WREG32(DMA_RB_CNTL + sdma_offsets[i], rb_cntl);
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.visible_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, false);
+ ring->ready = false;
+ }
+ }
+@@ -198,7 +198,7 @@ static int si_dma_start(struct amdgpu_device *adev)
+ }
+
+ if (adev->mman.buffer_funcs_ring == ring)
+- amdgpu_ttm_set_active_vram_size(adev, adev->gmc.real_vram_size);
++ amdgpu_ttm_set_buffer_funcs_status(adev, true);
+ }
+
+ return 0;
+--
+2.7.4
+