aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/1512-drm-amdgpu-Modify-free_memory_of_gpu-interface.patch
blob: fd5909e08fd8a9934dff95c29ed92bd062300e2a (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From 35920c8814664f8fbad628f4c08b9769372cc3a8 Mon Sep 17 00:00:00 2001
From: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
Date: Thu, 25 Aug 2016 17:59:18 -0400
Subject: [PATCH 1512/4131] drm/amdgpu: Modify free_memory_of_gpu interface

Change-Id: Iff6b4876e293110ac3e573217f357b90662645f1
Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c |  2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c         | 12 ++++++++----
 drivers/gpu/drm/amd/amdkfd/kfd_process.c         |  6 +++---
 drivers/gpu/drm/amd/include/kgd_kfd_interface.h  |  3 ++-
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
index b14c2f3..c0fdf52 100755
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
@@ -153,7 +153,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 		uint64_t *offset, void **kptr,
 		struct kfd_process_device *pdd, uint32_t flags);
 int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
-		struct kgd_dev *kgd, struct kgd_mem *mem);
+		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);
 int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(
 		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm);
 int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu(
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 54ff3de..edf1a6a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -861,7 +861,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 }
 
 int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
-		struct kgd_dev *kgd, struct kgd_mem *mem)
+		struct kgd_dev *kgd, struct kgd_mem *mem, void *vm)
 {
 	struct amdgpu_device *adev;
 	struct kfd_bo_va_list *entry, *tmp;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
index d42b415..134b1de 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
@@ -1189,7 +1189,8 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,
 	up_write(&p->lock);
 	if (idr_handle < 0) {
 		dev->kfd2kgd->free_memory_of_gpu(dev->kgd,
-						 (struct kgd_mem *) mem);
+						 (struct kgd_mem *) mem,
+						 pdd->vm);
 		return -EFAULT;
 	}
 
@@ -1326,7 +1327,8 @@ static int kfd_ioctl_alloc_memory_of_gpu_new(struct file *filep,
 	up_write(&p->lock);
 	if (idr_handle < 0) {
 		dev->kfd2kgd->free_memory_of_gpu(dev->kgd,
-						 (struct kgd_mem *) mem);
+						 (struct kgd_mem *) mem,
+						 pdd->vm);
 		return -EFAULT;
 	}
 
@@ -1376,7 +1378,8 @@ static int kfd_ioctl_free_memory_of_gpu(struct file *filep,
 
 	up_write(&p->lock);
 
-	ret = dev->kfd2kgd->free_memory_of_gpu(dev->kgd, buf_obj->mem);
+	ret = dev->kfd2kgd->free_memory_of_gpu(dev->kgd, buf_obj->mem,
+					       pdd->vm);
 
 	/* If freeing the buffer failed, leave the handle in place for
 	 * clean-up during process tear-down. */
@@ -1817,7 +1820,8 @@ static int kfd_ioctl_import_dmabuf(struct file *filep,
 	up_write(&p->lock);
 	if (idr_handle < 0) {
 		dev->kfd2kgd->free_memory_of_gpu(dev->kgd,
-						 (struct kgd_mem *)mem);
+						 (struct kgd_mem *)mem,
+						 pdd->vm);
 		return -EFAULT;
 	}
 
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 87dd412..19e3af9 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -80,7 +80,7 @@ static void kfd_process_free_gpuvm(struct kfd_dev *kdev, struct kgd_mem *mem,
 				void *vm)
 {
 	kdev->kfd2kgd->unmap_memory_to_gpu(kdev->kgd, mem, vm);
-	kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem);
+	kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem, vm);
 }
 
 /* kfd_process_alloc_gpuvm - Allocate GPU VM for the KFD process
@@ -132,7 +132,7 @@ static int kfd_process_alloc_gpuvm(struct kfd_process *p,
 	return err;
 
 err_map_mem:
-	kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem);
+	kdev->kfd2kgd->free_memory_of_gpu(kdev->kgd, mem, pdd->vm);
 err_alloc_mem:
 	*kptr = NULL;
 	return err;
@@ -416,7 +416,7 @@ static void kfd_process_free_outstanding_kfd_bos(struct kfd_process *p)
 
 			run_rdma_free_callback(buf_obj);
 			pdd->dev->kfd2kgd->free_memory_of_gpu(
-					pdd->dev->kgd, buf_obj->mem);
+					pdd->dev->kgd, buf_obj->mem, pdd->vm);
 			kfd_process_device_remove_obj_handle(pdd, id);
 		}
 	}
diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
index fdf55d0..4b52412 100644
--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@ -314,7 +314,8 @@ struct kfd2kgd_calls {
 			struct kgd_mem **mem, uint64_t *offset,
 			void **kptr, struct kfd_process_device *pdd,
 			uint32_t flags);
-	int (*free_memory_of_gpu)(struct kgd_dev *kgd, struct kgd_mem *mem);
+	int (*free_memory_of_gpu)(struct kgd_dev *kgd, struct kgd_mem *mem,
+			void *vm);
 	int (*map_memory_to_gpu)(struct kgd_dev *kgd, struct kgd_mem *mem,
 			void *vm);
 	int (*unmap_memory_to_gpu)(struct kgd_dev *kgd, struct kgd_mem *mem,
-- 
2.7.4