aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch181
1 files changed, 0 insertions, 181 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch
deleted file mode 100644
index 36ff7415..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1595-drm-amdgpu-kfd2kgd-Add-copy_mem_to_mem-interface.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 142e5801ce8fc7ca8649a94b4d04bd4f6838bb68 Mon Sep 17 00:00:00 2001
-From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
-Date: Mon, 23 Jan 2017 11:17:34 -0500
-Subject: [PATCH 1595/4131] drm/amdgpu: kfd2kgd: Add copy_mem_to_mem interface
-
-Change-Id: Ia0b7ad212f6f6f480d080ec63bf0d8765cc7863b
-Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 4 ++
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 3 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 3 +-
- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 88 +++++++++++++++++++++++
- drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 6 ++
- 5 files changed, 102 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-index db4f75c..6476491 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
-@@ -136,6 +136,10 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
- int amdgpu_amdkfd_gpuvm_restore_process_bos(void *master_vm);
- struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void);
- struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void);
-+int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem,
-+ uint64_t src_offset, struct kgd_mem *dst_mem,
-+ uint64_t dest_offset, uint64_t size, struct fence **f,
-+ uint64_t *actual_size);
-
- /* Shared API */
- int map_bo(struct amdgpu_device *rdev, uint64_t va, void *vm,
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-index cebf03a..ae860ec 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
-@@ -230,7 +230,8 @@ static const struct kfd2kgd_calls kfd2kgd = {
- .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info,
- .submit_ib = amdgpu_amdkfd_submit_ib,
- .get_tile_config = amdgpu_amdkfd_get_tile_config,
-- .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos
-+ .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos,
-+ .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem
- };
-
- struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions()
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-index da6a243..fbea6a6 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
-@@ -209,7 +209,8 @@ static const struct kfd2kgd_calls kfd2kgd = {
- .get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info,
- .submit_ib = amdgpu_amdkfd_submit_ib,
- .get_tile_config = amdgpu_amdkfd_get_tile_config,
-- .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos
-+ .restore_process_bos = amdgpu_amdkfd_gpuvm_restore_process_bos,
-+ .copy_mem_to_mem = amdgpu_amdkfd_copy_mem_to_mem
- };
-
- struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions()
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-index 3f2bc2f..50af53f 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
-@@ -2250,3 +2250,91 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *m_vm)
- kfree(pd_bo_list);
- return ret;
- }
-+
-+int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem,
-+ uint64_t src_offset, struct kgd_mem *dst_mem,
-+ uint64_t dst_offset, uint64_t size,
-+ struct fence **f, uint64_t *actual_size)
-+{
-+ struct amdgpu_device *adev = NULL;
-+ struct ttm_mem_reg *src = NULL, *dst = NULL;
-+ struct amdgpu_ring *ring;
-+ struct ww_acquire_ctx ticket;
-+ struct list_head list;
-+ struct amdgpu_bo_list_entry *entry;
-+ uint64_t src_start, dst_start;
-+ int r;
-+
-+ if (!kgd || !src_mem || !dst_mem)
-+ return -EINVAL;
-+
-+ if (actual_size)
-+ *actual_size = 0;
-+
-+ adev = get_amdgpu_device(kgd);
-+ src = &src_mem->bo->tbo.mem;
-+ dst = &dst_mem->bo->tbo.mem;
-+
-+ ring = adev->mman.buffer_funcs_ring;
-+
-+ INIT_LIST_HEAD(&list);
-+ entry = &src_mem->bo_list_entry;
-+ list_add_tail(&entry->tv.head, &list);
-+ entry = &dst_mem->bo_list_entry;
-+ list_add_tail(&entry->tv.head, &list);
-+
-+ r = ttm_eu_reserve_buffers(&ticket, &list, false, NULL);
-+ if (r) {
-+ pr_err("Copy buffer failed. Unable to reserve bo (%d)\n", r);
-+ return r;
-+ }
-+
-+ src_start = (src->start << PAGE_SHIFT) + src_offset;
-+ dst_start = (dst->start << PAGE_SHIFT) + dst_offset;
-+
-+ switch (src->mem_type) {
-+ case TTM_PL_VRAM:
-+ src_start += adev->mc.vram_start;
-+ break;
-+ case TTM_PL_TT:
-+ src_start += adev->mc.gtt_start;
-+ break;
-+ default:
-+ DRM_ERROR("Unknown placement %d\n", src->mem_type);
-+ r = -EINVAL;
-+ goto copy_fail;
-+ }
-+ switch (dst->mem_type) {
-+ case TTM_PL_VRAM:
-+ dst_start += adev->mc.vram_start;
-+ break;
-+ case TTM_PL_TT:
-+ dst_start += adev->mc.gtt_start;
-+ break;
-+ default:
-+ DRM_ERROR("Unknown placement %d\n", dst->mem_type);
-+ r = -EINVAL;
-+ goto copy_fail;
-+ }
-+ if (!ring->ready) {
-+ pr_err("Trying to move memory with ring turned off.\n");
-+ r = -EINVAL;
-+ goto copy_fail;
-+ }
-+
-+ r = amdgpu_copy_buffer(ring, src_start, dst_start,
-+ size, NULL, f);
-+ if (r)
-+ goto copy_fail;
-+
-+ if (actual_size)
-+ *actual_size = size;
-+
-+ amdgpu_bo_fence(src_mem->bo, *f, true);
-+ amdgpu_bo_fence(dst_mem->bo, *f, true);
-+
-+copy_fail:
-+ ttm_eu_backoff_reservation(&ticket, &list);
-+ return r;
-+}
-+
-diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-index a57dbb1..57e0982 100644
---- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
-@@ -226,6 +226,8 @@ struct tile_config {
- * @restore_process_bos: Restore all BOs that belongs to the process identified
- * by master_vm.
- *
-+ * @copy_mem_to_mem: Copies size bytes from source BO to destination BO
-+ *
- * This structure contains function pointers to services that the kgd driver
- * provides to amdkfd driver.
- *
-@@ -371,6 +373,10 @@ struct kfd2kgd_calls {
- struct tile_config *config);
-
- int (*restore_process_bos)(void *master_vm);
-+ int (*copy_mem_to_mem)(struct kgd_dev *kgd, struct kgd_mem *src_mem,
-+ uint64_t src_offset, struct kgd_mem *dst_mem,
-+ uint64_t dest_offset, uint64_t size, struct fence **f,
-+ uint64_t *actual_size);
- };
-
- /**
---
-2.7.4
-