aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch240
1 files changed, 240 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch
new file mode 100644
index 00000000..f081b22c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3723-drm-amdgpu-forward-operation-context-to-ttm_bo_mem_s.patch
@@ -0,0 +1,240 @@
+From 44126c023ffb2b77a4274703f63ae845872de3f6 Mon Sep 17 00:00:00 2001
+From: Christian Koenig <christian.koenig@amd.com>
+Date: Wed, 26 Apr 2017 16:44:41 +0200
+Subject: [PATCH 3723/4131] drm/amdgpu: forward operation context to
+ ttm_bo_mem_space
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This way we can finally use some more stats.
+
+Signed-off-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
+Tested-by: Dieter Nützel <Dieter@nuetzel-hh.de>
+Tested-by: Michel Dänzer <michel.daenzer@amd.com>
+Acked-by: Felix Kuehling <Felix.Kuehling@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 11 ++++++-----
+ drivers/gpu/drm/nouveau/nouveau_bo.c | 6 ++++--
+ drivers/gpu/drm/radeon/radeon_ttm.c | 8 ++++----
+ drivers/gpu/drm/ttm/ttm_bo.c | 22 +++++++++++-----------
+ 4 files changed, 25 insertions(+), 22 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+index f7673d0..d6ca275 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+@@ -503,6 +503,7 @@ static int amdgpu_move_vram_ram(struct ttm_buffer_object *bo,
+ bool no_wait_gpu,
+ struct ttm_mem_reg *new_mem)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ struct amdgpu_device *adev;
+ struct ttm_mem_reg *old_mem = &bo->mem;
+ struct ttm_mem_reg tmp_mem;
+@@ -520,8 +521,7 @@ static int amdgpu_move_vram_ram(struct ttm_buffer_object *bo,
+ placements.fpfn = 0;
+ placements.lpfn = 0;
+ placements.flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
+- r = ttm_bo_mem_space(bo, &placement, &tmp_mem,
+- interruptible, no_wait_gpu);
++ r = ttm_bo_mem_space(bo, &placement, &tmp_mem, &ctx);
+ if (unlikely(r)) {
+ return r;
+ }
+@@ -550,6 +550,7 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo,
+ bool no_wait_gpu,
+ struct ttm_mem_reg *new_mem)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ struct amdgpu_device *adev;
+ struct ttm_mem_reg *old_mem = &bo->mem;
+ struct ttm_mem_reg tmp_mem;
+@@ -567,8 +568,7 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo,
+ placements.fpfn = 0;
+ placements.lpfn = 0;
+ placements.flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
+- r = ttm_bo_mem_space(bo, &placement, &tmp_mem,
+- interruptible, no_wait_gpu);
++ r = ttm_bo_mem_space(bo, &placement, &tmp_mem, &ctx);
+ if (unlikely(r)) {
+ return r;
+ }
+@@ -944,6 +944,7 @@ static int amdgpu_ttm_backend_bind(struct ttm_tt *ttm,
+ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
+ {
+ struct amdgpu_device *adev = amdgpu_ttm_adev(bo->bdev);
++ struct ttm_operation_ctx ctx = { false, false };
+ struct amdgpu_ttm_tt *gtt = (void*)bo->ttm;
+ struct ttm_mem_reg tmp;
+
+@@ -967,7 +968,7 @@ int amdgpu_ttm_alloc_gart(struct ttm_buffer_object *bo)
+ placements.flags = (bo->mem.placement & ~TTM_PL_MASK_MEM) |
+ TTM_PL_FLAG_TT;
+
+- r = ttm_bo_mem_space(bo, &placement, &tmp, false, false);
++ r = ttm_bo_mem_space(bo, &placement, &tmp, &ctx);
+ if (unlikely(r))
+ return r;
+
+diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
+index f43cf45..f620534 100644
+--- a/drivers/gpu/drm/nouveau/nouveau_bo.c
++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
+@@ -1127,6 +1127,7 @@ static int
+ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict, bool intr,
+ bool no_wait_gpu, struct ttm_mem_reg *new_reg)
+ {
++ struct ttm_operation_ctx ctx = { intr, no_wait_gpu };
+ struct ttm_place placement_memtype = {
+ .fpfn = 0,
+ .lpfn = 0,
+@@ -1141,7 +1142,7 @@ nouveau_bo_move_flipd(struct ttm_buffer_object *bo, bool evict, bool intr,
+
+ tmp_reg = *new_reg;
+ tmp_reg.mm_node = NULL;
+- ret = ttm_bo_mem_space(bo, &placement, &tmp_reg, intr, no_wait_gpu);
++ ret = ttm_bo_mem_space(bo, &placement, &tmp_reg, &ctx);
+ if (ret)
+ return ret;
+
+@@ -1163,6 +1164,7 @@ static int
+ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, bool intr,
+ bool no_wait_gpu, struct ttm_mem_reg *new_reg)
+ {
++ struct ttm_operation_ctx ctx = { intr, no_wait_gpu };
+ struct ttm_place placement_memtype = {
+ .fpfn = 0,
+ .lpfn = 0,
+@@ -1177,7 +1179,7 @@ nouveau_bo_move_flips(struct ttm_buffer_object *bo, bool evict, bool intr,
+
+ tmp_reg = *new_reg;
+ tmp_reg.mm_node = NULL;
+- ret = ttm_bo_mem_space(bo, &placement, &tmp_reg, intr, no_wait_gpu);
++ ret = ttm_bo_mem_space(bo, &placement, &tmp_reg, &ctx);
+ if (ret)
+ return ret;
+
+diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
+index 5ff8611..cd0fba5 100644
+--- a/drivers/gpu/drm/radeon/radeon_ttm.c
++++ b/drivers/gpu/drm/radeon/radeon_ttm.c
+@@ -311,6 +311,7 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
+ bool no_wait_gpu,
+ struct ttm_mem_reg *new_mem)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ struct radeon_device *rdev;
+ struct ttm_mem_reg *old_mem = &bo->mem;
+ struct ttm_mem_reg tmp_mem;
+@@ -328,8 +329,7 @@ static int radeon_move_vram_ram(struct ttm_buffer_object *bo,
+ placements.fpfn = 0;
+ placements.lpfn = 0;
+ placements.flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
+- r = ttm_bo_mem_space(bo, &placement, &tmp_mem,
+- interruptible, no_wait_gpu);
++ r = ttm_bo_mem_space(bo, &placement, &tmp_mem, &ctx);
+ if (unlikely(r)) {
+ return r;
+ }
+@@ -358,6 +358,7 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
+ bool no_wait_gpu,
+ struct ttm_mem_reg *new_mem)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ struct radeon_device *rdev;
+ struct ttm_mem_reg *old_mem = &bo->mem;
+ struct ttm_mem_reg tmp_mem;
+@@ -375,8 +376,7 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo,
+ placements.fpfn = 0;
+ placements.lpfn = 0;
+ placements.flags = TTM_PL_MASK_CACHING | TTM_PL_FLAG_TT;
+- r = ttm_bo_mem_space(bo, &placement, &tmp_mem,
+- interruptible, no_wait_gpu);
++ r = ttm_bo_mem_space(bo, &placement, &tmp_mem, &ctx);
+ if (unlikely(r)) {
+ return r;
+ }
+diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
+index 901d1ec..51932c3 100644
+--- a/drivers/gpu/drm/ttm/ttm_bo.c
++++ b/drivers/gpu/drm/ttm/ttm_bo.c
+@@ -673,6 +673,7 @@ EXPORT_SYMBOL(ttm_bo_unlock_delayed_workqueue);
+ static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible,
+ bool no_wait_gpu)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ struct ttm_bo_device *bdev = bo->bdev;
+ struct ttm_mem_reg evict_mem;
+ struct ttm_placement placement;
+@@ -688,8 +689,7 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible,
+ placement.num_placement = 0;
+ placement.num_busy_placement = 0;
+ bdev->driver->evict_flags(bo, &placement);
+- ret = ttm_bo_mem_space(bo, &placement, &evict_mem, interruptible,
+- no_wait_gpu);
++ ret = ttm_bo_mem_space(bo, &placement, &evict_mem, &ctx);
+ if (ret) {
+ if (ret != -ERESTARTSYS) {
+ pr_err("Failed to find memory space for buffer 0x%p eviction\n",
+@@ -699,8 +699,8 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo, bool interruptible,
+ goto out;
+ }
+
+- ret = ttm_bo_handle_move_mem(bo, &evict_mem, true, interruptible,
+- no_wait_gpu);
++ ret = ttm_bo_handle_move_mem(bo, &evict_mem, true,
++ interruptible, no_wait_gpu);
+ if (unlikely(ret)) {
+ if (ret != -ERESTARTSYS)
+ pr_err("Buffer eviction failed\n");
+@@ -907,8 +907,7 @@ static bool ttm_bo_mt_compatible(struct ttm_mem_type_manager *man,
+ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
+ struct ttm_placement *placement,
+ struct ttm_mem_reg *mem,
+- bool interruptible,
+- bool no_wait_gpu)
++ struct ttm_operation_ctx *ctx)
+ {
+ struct ttm_bo_device *bdev = bo->bdev;
+ struct ttm_mem_type_manager *man;
+@@ -1003,7 +1002,8 @@ int ttm_bo_mem_space(struct ttm_buffer_object *bo,
+ }
+
+ ret = ttm_bo_mem_force_space(bo, mem_type, place, mem,
+- interruptible, no_wait_gpu);
++ ctx->interruptible,
++ ctx->no_wait_gpu);
+ if (ret == 0 && mem->mm_node) {
+ mem->placement = cur_flags;
+ return 0;
+@@ -1026,6 +1026,7 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
+ bool interruptible,
+ bool no_wait_gpu)
+ {
++ struct ttm_operation_ctx ctx = { interruptible, no_wait_gpu };
+ int ret = 0;
+ struct ttm_mem_reg mem;
+
+@@ -1039,12 +1040,11 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
+ /*
+ * Determine where to move the buffer.
+ */
+- ret = ttm_bo_mem_space(bo, placement, &mem,
+- interruptible, no_wait_gpu);
++ ret = ttm_bo_mem_space(bo, placement, &mem, &ctx);
+ if (ret)
+ goto out_unlock;
+- ret = ttm_bo_handle_move_mem(bo, &mem, false,
+- interruptible, no_wait_gpu);
++ ret = ttm_bo_handle_move_mem(bo, &mem, false, interruptible,
++ no_wait_gpu);
+ out_unlock:
+ if (ret && mem.mm_node)
+ ttm_bo_mem_put(bo, &mem);
+--
+2.7.4
+