diff options
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.patch | 240 |
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 + |