aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/1560-drm-amdgpu-Add-mmap_offset-for-KFD-BO-import-dmabuf.patch
blob: 9571cb0dee90dc9994280662e2ae37e44c6c1da2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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