diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1559-drm-amdgpu-Export-dmabuf-support-for-KFD-BOs.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1559-drm-amdgpu-Export-dmabuf-support-for-KFD-BOs.patch | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1559-drm-amdgpu-Export-dmabuf-support-for-KFD-BOs.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1559-drm-amdgpu-Export-dmabuf-support-for-KFD-BOs.patch deleted file mode 100644 index 4a0cedf0..00000000 --- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1559-drm-amdgpu-Export-dmabuf-support-for-KFD-BOs.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 2cedb24cf8ae3857d9c64eb54ca3b110bb076fe8 Mon Sep 17 00:00:00 2001 -From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> -Date: Fri, 18 Nov 2016 17:30:00 -0500 -Subject: [PATCH 1559/4131] drm/amdgpu: Export dmabuf support for KFD BOs - -Change-Id: Id0a30c029f1c9d0eff8fc76df40d391a3cddfdbb -Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 1 + - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 1 + - drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 27 +++++++++++++++++++++++ - drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 4 ++++ - 6 files changed, 37 insertions(+) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 11b759e..ee6069f 100755 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -408,6 +408,8 @@ amdgpu_gem_prime_import_sg_table(struct drm_device *dev, - struct dma_buf *amdgpu_gem_prime_export(struct drm_device *dev, - struct drm_gem_object *gobj, - int flags); -+struct drm_gem_object * -+amdgpu_gem_prime_foreign_bo(struct amdgpu_device *adev, struct amdgpu_bo *bo); - struct drm_gem_object *amdgpu_gem_prime_import(struct drm_device *dev, - struct dma_buf *dma_buf); - int amdgpu_gem_prime_pin(struct drm_gem_object *obj); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -index 9c8c941..362132b 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h -@@ -195,6 +195,8 @@ void amdgpu_amdkfd_gpuvm_unpin_put_sg_table( - int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, int dma_buf_fd, - uint64_t va, void *vm, - struct kgd_mem **mem, uint64_t *size); -+int amdgpu_amdkfd_gpuvm_export_dmabuf(struct kgd_dev *kgd, void *vm, -+ struct kgd_mem *mem, int *dmabuf_fd); - int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm); - int amdgpu_amdkfd_gpuvm_restore_mem(struct kgd_mem *mem, struct mm_struct *mm); - -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 7ab108e..4896541 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c -@@ -224,6 +224,7 @@ static const struct kfd2kgd_calls kfd2kgd = { - .unpin_put_sg_table_bo = amdgpu_amdkfd_gpuvm_unpin_put_sg_table, - .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, - .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, -+ .export_dmabuf = amdgpu_amdkfd_gpuvm_export_dmabuf, - .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, -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 ba316e8..60dafce 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c -@@ -203,6 +203,7 @@ static const struct kfd2kgd_calls kfd2kgd = { - .unpin_put_sg_table_bo = amdgpu_amdkfd_gpuvm_unpin_put_sg_table, - .get_dmabuf_info = amdgpu_amdkfd_get_dmabuf_info, - .import_dmabuf = amdgpu_amdkfd_gpuvm_import_dmabuf, -+ .export_dmabuf = amdgpu_amdkfd_gpuvm_export_dmabuf, - .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, -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -index 0926000..3a7bfa1 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c -@@ -1845,6 +1845,33 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, int dma_buf_fd, - return r; - } - -+int amdgpu_amdkfd_gpuvm_export_dmabuf(struct kgd_dev *kgd, void *vm, -+ struct kgd_mem *mem, int *dmabuf_fd) -+{ -+ struct dma_buf *dmabuf; -+ struct amdgpu_device *adev = NULL; -+ struct amdgpu_bo *bo = NULL; -+ struct drm_gem_object *gobj = NULL; -+ -+ if (!dmabuf_fd || !kgd || !vm || !mem) -+ return -EINVAL; -+ -+ adev = get_amdgpu_device(kgd); -+ bo = mem->bo; -+ -+ gobj = amdgpu_gem_prime_foreign_bo(adev, bo); -+ if (gobj == NULL) { -+ pr_err("Export BO failed. Unable to find/create GEM object\n"); -+ return -EINVAL; -+ } -+ -+ dmabuf = amdgpu_gem_prime_export(adev->ddev, gobj, 0); -+ *dmabuf_fd = dma_buf_fd(dmabuf, 0); -+ -+ pr_debug("Exported: %d\n", *dmabuf_fd); -+ return 0; -+} -+ - /* Runs out of process context. mem->lock must be held. */ - int amdgpu_amdkfd_gpuvm_evict_mem(struct kgd_mem *mem, struct mm_struct *mm) - { -diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -index 910dca1..68b72cd 100644 ---- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h -@@ -217,6 +217,8 @@ struct tile_config { - * @import_dmabuf: Imports a DMA buffer, creating a new kgd_mem object - * Supports only DMA buffers created by GPU driver on the same GPU - * -+ * @export_dmabuf: Emports a KFD BO for sharing with other process -+ * - * @submit_ib: Submits an IB to the engine specified by inserting the IB to - * the corresonded ring (ring type). - * -@@ -355,6 +357,8 @@ struct kfd2kgd_calls { - uint32_t *metadata_size, uint32_t *flags); - int (*import_dmabuf)(struct kgd_dev *kgd, int dma_buf_fd, uint64_t va, - void *vm, struct kgd_mem **mem, uint64_t *size); -+ int (*export_dmabuf)(struct kgd_dev *kgd, void *vm, struct kgd_mem *mem, -+ int *dma_buf_fd); - - int (*get_vm_fault_info)(struct kgd_dev *kgd, - struct kfd_vm_fault_info *info); --- -2.7.4 - |