diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3728-drm-ttm-add-context-to-driver-move-callback-as-well.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3728-drm-ttm-add-context-to-driver-move-callback-as-well.patch | 260 |
1 files changed, 260 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3728-drm-ttm-add-context-to-driver-move-callback-as-well.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3728-drm-ttm-add-context-to-driver-move-callback-as-well.patch new file mode 100644 index 00000000..16dd6630 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3728-drm-ttm-add-context-to-driver-move-callback-as-well.patch @@ -0,0 +1,260 @@ +From 7c3dfb22a3ae9fa39db8bcf9742236e43f7ea869 Mon Sep 17 00:00:00 2001 +From: Christian Koenig <christian.koenig@amd.com> +Date: Wed, 26 Apr 2017 16:31:14 +0200 +Subject: [PATCH 3728/4131] drm/ttm: add context to driver move callback as + well +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Instead of passing the parameters manually. + +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 | 23 +++++++++++------------ + drivers/gpu/drm/nouveau/nouveau_bo.c | 27 ++++++++++++++++----------- + drivers/gpu/drm/qxl/qxl_ttm.c | 9 ++++----- + drivers/gpu/drm/radeon/radeon_ttm.c | 23 ++++++++++++----------- + drivers/gpu/drm/ttm/ttm_bo.c | 3 +-- + drivers/gpu/drm/virtio/virtgpu_ttm.c | 7 +++---- + 6 files changed, 47 insertions(+), 45 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +index 990491e..a578f60 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +@@ -585,10 +585,9 @@ static int amdgpu_move_ram_vram(struct ttm_buffer_object *bo, + return r; + } + +-static int amdgpu_bo_move(struct ttm_buffer_object *bo, +- bool evict, bool interruptible, +- bool no_wait_gpu, +- struct ttm_mem_reg *new_mem) ++static int amdgpu_bo_move(struct ttm_buffer_object *bo, bool evict, ++ struct ttm_operation_ctx *ctx, ++ struct ttm_mem_reg *new_mem) + { + struct amdgpu_device *adev; + struct amdgpu_bo *abo; +@@ -624,21 +623,21 @@ static int amdgpu_bo_move(struct ttm_buffer_object *bo, + + if (old_mem->mem_type == TTM_PL_VRAM && + new_mem->mem_type == TTM_PL_SYSTEM) { +- r = amdgpu_move_vram_ram(bo, evict, interruptible, +- no_wait_gpu, new_mem); ++ r = amdgpu_move_vram_ram(bo, evict, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + } else if (old_mem->mem_type == TTM_PL_SYSTEM && + new_mem->mem_type == TTM_PL_VRAM) { +- r = amdgpu_move_ram_vram(bo, evict, interruptible, +- no_wait_gpu, new_mem); ++ r = amdgpu_move_ram_vram(bo, evict, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + } else { +- r = amdgpu_move_blit(bo, evict, no_wait_gpu, +- new_mem, old_mem); ++ r = amdgpu_move_blit(bo, evict, ctx->no_wait_gpu, ++ new_mem, old_mem); + } + + if (r) { + memcpy: +- r = ttm_bo_move_memcpy(bo, interruptible, +- no_wait_gpu, new_mem); ++ r = ttm_bo_move_memcpy(bo, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + if (r) { + return r; + } +diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c +index 59f92c6..e5406e0 100644 +--- a/drivers/gpu/drm/nouveau/nouveau_bo.c ++++ b/drivers/gpu/drm/nouveau/nouveau_bo.c +@@ -1255,8 +1255,9 @@ nouveau_bo_vm_cleanup(struct ttm_buffer_object *bo, + } + + static int +-nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr, +- bool no_wait_gpu, struct ttm_mem_reg *new_reg) ++nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, ++ struct ttm_operation_ctx *ctx, ++ struct ttm_mem_reg *new_reg) + { + struct nouveau_drm *drm = nouveau_bdev(bo->bdev); + struct nouveau_bo *nvbo = nouveau_bo(bo); +@@ -1264,7 +1265,7 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr, + struct nouveau_drm_tile *new_tile = NULL; + int ret = 0; + +- ret = ttm_bo_wait(bo, intr, no_wait_gpu); ++ ret = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu); + if (ret) + return ret; + +@@ -1288,22 +1289,26 @@ nouveau_bo_move(struct ttm_buffer_object *bo, bool evict, bool intr, + /* Hardware assisted copy. */ + if (drm->ttm.move) { + if (new_reg->mem_type == TTM_PL_SYSTEM) +- ret = nouveau_bo_move_flipd(bo, evict, intr, +- no_wait_gpu, new_reg); ++ ret = nouveau_bo_move_flipd(bo, evict, ++ ctx->interruptible, ++ ctx->no_wait_gpu, new_reg); + else if (old_reg->mem_type == TTM_PL_SYSTEM) +- ret = nouveau_bo_move_flips(bo, evict, intr, +- no_wait_gpu, new_reg); ++ ret = nouveau_bo_move_flips(bo, evict, ++ ctx->interruptible, ++ ctx->no_wait_gpu, new_reg); + else +- ret = nouveau_bo_move_m2mf(bo, evict, intr, +- no_wait_gpu, new_reg); ++ ret = nouveau_bo_move_m2mf(bo, evict, ++ ctx->interruptible, ++ ctx->no_wait_gpu, new_reg); + if (!ret) + goto out; + } + + /* Fallback to software copy. */ +- ret = ttm_bo_wait(bo, intr, no_wait_gpu); ++ ret = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu); + if (ret == 0) +- ret = ttm_bo_move_memcpy(bo, intr, no_wait_gpu, new_reg); ++ ret = ttm_bo_move_memcpy(bo, ctx->interruptible, ++ ctx->no_wait_gpu, new_reg); + + out: + if (drm->client.device.info.family < NV_DEVICE_INFO_V0_TESLA) { +diff --git a/drivers/gpu/drm/qxl/qxl_ttm.c b/drivers/gpu/drm/qxl/qxl_ttm.c +index 05990f6..a4fcc59 100644 +--- a/drivers/gpu/drm/qxl/qxl_ttm.c ++++ b/drivers/gpu/drm/qxl/qxl_ttm.c +@@ -342,15 +342,14 @@ static void qxl_move_null(struct ttm_buffer_object *bo, + new_mem->mm_node = NULL; + } + +-static int qxl_bo_move(struct ttm_buffer_object *bo, +- bool evict, bool interruptible, +- bool no_wait_gpu, ++static int qxl_bo_move(struct ttm_buffer_object *bo, bool evict, ++ struct ttm_operation_ctx *ctx, + struct ttm_mem_reg *new_mem) + { + struct ttm_mem_reg *old_mem = &bo->mem; + int ret; + +- ret = ttm_bo_wait(bo, interruptible, no_wait_gpu); ++ ret = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu); + if (ret) + return ret; + +@@ -359,7 +358,7 @@ static int qxl_bo_move(struct ttm_buffer_object *bo, + qxl_move_null(bo, new_mem); + return 0; + } +- return ttm_bo_move_memcpy(bo, interruptible, no_wait_gpu, ++ return ttm_bo_move_memcpy(bo, ctx->interruptible, ctx->no_wait_gpu, + new_mem); + } + +diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c +index cd0fba5..2be5d99 100644 +--- a/drivers/gpu/drm/radeon/radeon_ttm.c ++++ b/drivers/gpu/drm/radeon/radeon_ttm.c +@@ -393,17 +393,16 @@ static int radeon_move_ram_vram(struct ttm_buffer_object *bo, + return r; + } + +-static int radeon_bo_move(struct ttm_buffer_object *bo, +- bool evict, bool interruptible, +- bool no_wait_gpu, +- struct ttm_mem_reg *new_mem) ++static int radeon_bo_move(struct ttm_buffer_object *bo, bool evict, ++ struct ttm_operation_ctx *ctx, ++ struct ttm_mem_reg *new_mem) + { + struct radeon_device *rdev; + struct radeon_bo *rbo; + struct ttm_mem_reg *old_mem = &bo->mem; + int r; + +- r = ttm_bo_wait(bo, interruptible, no_wait_gpu); ++ r = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu); + if (r) + return r; + +@@ -433,19 +432,21 @@ static int radeon_bo_move(struct ttm_buffer_object *bo, + + if (old_mem->mem_type == TTM_PL_VRAM && + new_mem->mem_type == TTM_PL_SYSTEM) { +- r = radeon_move_vram_ram(bo, evict, interruptible, +- no_wait_gpu, new_mem); ++ r = radeon_move_vram_ram(bo, evict, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + } else if (old_mem->mem_type == TTM_PL_SYSTEM && + new_mem->mem_type == TTM_PL_VRAM) { +- r = radeon_move_ram_vram(bo, evict, interruptible, +- no_wait_gpu, new_mem); ++ r = radeon_move_ram_vram(bo, evict, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + } else { +- r = radeon_move_blit(bo, evict, no_wait_gpu, new_mem, old_mem); ++ r = radeon_move_blit(bo, evict, ctx->no_wait_gpu, ++ new_mem, old_mem); + } + + if (r) { + memcpy: +- r = ttm_bo_move_memcpy(bo, interruptible, no_wait_gpu, new_mem); ++ r = ttm_bo_move_memcpy(bo, ctx->interruptible, ++ ctx->no_wait_gpu, new_mem); + if (r) { + return r; + } +diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c +index a8928ceb..4c379dd 100644 +--- a/drivers/gpu/drm/ttm/ttm_bo.c ++++ b/drivers/gpu/drm/ttm/ttm_bo.c +@@ -325,8 +325,7 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, + ret = ttm_bo_move_ttm(bo, ctx->interruptible, + ctx->no_wait_gpu, mem); + else if (bdev->driver->move) +- ret = bdev->driver->move(bo, evict, ctx->interruptible, +- ctx->no_wait_gpu, mem); ++ ret = bdev->driver->move(bo, evict, ctx, mem); + else + ret = ttm_bo_move_memcpy(bo, ctx->interruptible, + ctx->no_wait_gpu, mem); +diff --git a/drivers/gpu/drm/virtio/virtgpu_ttm.c b/drivers/gpu/drm/virtio/virtgpu_ttm.c +index 81f9427..9113f2e 100644 +--- a/drivers/gpu/drm/virtio/virtgpu_ttm.c ++++ b/drivers/gpu/drm/virtio/virtgpu_ttm.c +@@ -366,14 +366,13 @@ static void virtio_gpu_move_null(struct ttm_buffer_object *bo, + new_mem->mm_node = NULL; + } + +-static int virtio_gpu_bo_move(struct ttm_buffer_object *bo, +- bool evict, bool interruptible, +- bool no_wait_gpu, ++static int virtio_gpu_bo_move(struct ttm_buffer_object *bo, bool evict, ++ struct ttm_operation_ctx *ctx, + struct ttm_mem_reg *new_mem) + { + int ret; + +- ret = ttm_bo_wait(bo, interruptible, no_wait_gpu); ++ ret = ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu); + if (ret) + return ret; + +-- +2.7.4 + |