diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch new file mode 100644 index 00000000..9571cb0d --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch @@ -0,0 +1,84 @@ +From 30d762830460053cd28e347210cab18d7cff7b6a Mon Sep 17 00:00:00 2001 +From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> +Date: Fri, 18 Nov 2016 17:53:08 -0500 +Subject: [PATCH 1560/4131] drm/amdgpu: Add mmap_offset for KFD BO import + dmabuf + +Change-Id: Ida621e50cbadf376cf7618077079f3ba2eccd373 +Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 ++- + drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 +++++- + drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 3 ++- + drivers/gpu/drm/amd/include/kgd_kfd_interface.h | 3 ++- + 4 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +index 362132b..6003b77 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +@@ -194,7 +194,8 @@ void amdgpu_amdkfd_gpuvm_unpin_put_sg_table( + struct kgd_mem *mem, struct sg_table *sg); + 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); ++ struct kgd_mem **mem, uint64_t *size, ++ uint64_t *mmap_offset); + 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); +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +index 3a7bfa1..a5d84d7 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +@@ -1791,7 +1791,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) ++ struct kgd_mem **mem, uint64_t *size, ++ uint64_t *mmap_offset) + { + struct amdgpu_device *adev = (struct amdgpu_device *)kgd; + struct dma_buf *dma_buf; +@@ -1822,6 +1823,9 @@ int amdgpu_amdkfd_gpuvm_import_dmabuf(struct kgd_dev *kgd, int dma_buf_fd, + if (size) + *size = amdgpu_bo_size(bo); + ++ if (mmap_offset) ++ *mmap_offset = amdgpu_bo_mmap_offset(bo); ++ + *mem = kzalloc(sizeof(struct kgd_mem), GFP_KERNEL); + if (*mem == NULL) { + r = -ENOMEM; +diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +index f56d24a..f28b1c3 100644 +--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c ++++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +@@ -1798,7 +1798,8 @@ static int kfd_ioctl_import_dmabuf(struct file *filep, + + r = dev->kfd2kgd->import_dmabuf(dev->kgd, args->dmabuf_fd, + args->va_addr, pdd->vm, +- (struct kgd_mem **)&mem, &size); ++ (struct kgd_mem **)&mem, &size, ++ NULL); + if (r) + 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 68b72cd..a655b37 100644 +--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h ++++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h +@@ -356,7 +356,8 @@ struct kfd2kgd_calls { + void *metadata_buffer, size_t buffer_size, + 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); ++ void *vm, struct kgd_mem **mem, uint64_t *size, ++ uint64_t *mmap_offset); + int (*export_dmabuf)(struct kgd_dev *kgd, void *vm, struct kgd_mem *mem, + int *dma_buf_fd); + +-- +2.7.4 + |