diff options
author | Oded Gabbay <oded.gabbay@amd.com> | 2014-10-26 03:43:43 -0400 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@amd.com> | 2015-01-09 15:26:11 -0500 |
commit | 632aa2cb081fbf6ea16d22ab332489106f10d727 (patch) | |
tree | ba264e3eeb13410824dc0d35794a4827b04a2680 | |
parent | a86aa3ca5a2f16772653782c078f62a7d76dd57e (diff) |
drm/radeon: Remove old radeon_sa usage from kfd-->kgd interface
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
Reviewed-by: Alexey Skidanov <Alexey.skidanov@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_kfd.c | 99 |
1 files changed, 1 insertions, 98 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c b/drivers/gpu/drm/radeon/radeon_kfd.c index 2d604ed16b7d..cae11eefecf0 100644 --- a/drivers/gpu/drm/radeon/radeon_kfd.c +++ b/drivers/gpu/drm/radeon/radeon_kfd.c | |||
@@ -34,20 +34,11 @@ | |||
34 | #define CIK_PIPE_PER_MEC (4) | 34 | #define CIK_PIPE_PER_MEC (4) |
35 | 35 | ||
36 | struct kgd_mem { | 36 | struct kgd_mem { |
37 | struct radeon_sa_bo *sa_bo; | ||
38 | uint64_t gpu_addr; | ||
39 | void *ptr; | ||
40 | struct radeon_bo *bo; | 37 | struct radeon_bo *bo; |
38 | uint64_t gpu_addr; | ||
41 | void *cpu_ptr; | 39 | void *cpu_ptr; |
42 | }; | 40 | }; |
43 | 41 | ||
44 | static int init_sa_manager(struct kgd_dev *kgd, unsigned int size); | ||
45 | static void fini_sa_manager(struct kgd_dev *kgd); | ||
46 | |||
47 | static int allocate_mem(struct kgd_dev *kgd, size_t size, size_t alignment, | ||
48 | enum kgd_memory_pool pool, struct kgd_mem **mem); | ||
49 | |||
50 | static void free_mem(struct kgd_dev *kgd, struct kgd_mem *mem); | ||
51 | 42 | ||
52 | static int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, | 43 | static int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, |
53 | void **mem_obj, uint64_t *gpu_addr, | 44 | void **mem_obj, uint64_t *gpu_addr, |
@@ -91,10 +82,6 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd, | |||
91 | unsigned int timeout); | 82 | unsigned int timeout); |
92 | 83 | ||
93 | static const struct kfd2kgd_calls kfd2kgd = { | 84 | static const struct kfd2kgd_calls kfd2kgd = { |
94 | .init_sa_manager = init_sa_manager, | ||
95 | .fini_sa_manager = fini_sa_manager, | ||
96 | .allocate_mem = allocate_mem, | ||
97 | .free_mem = free_mem, | ||
98 | .init_gtt_mem_allocation = alloc_gtt_mem, | 85 | .init_gtt_mem_allocation = alloc_gtt_mem, |
99 | .free_gtt_mem = free_gtt_mem, | 86 | .free_gtt_mem = free_gtt_mem, |
100 | .get_vmem_size = get_vmem_size, | 87 | .get_vmem_size = get_vmem_size, |
@@ -198,90 +185,6 @@ int radeon_kfd_resume(struct radeon_device *rdev) | |||
198 | return r; | 185 | return r; |
199 | } | 186 | } |
200 | 187 | ||
201 | static u32 pool_to_domain(enum kgd_memory_pool p) | ||
202 | { | ||
203 | switch (p) { | ||
204 | case KGD_POOL_FRAMEBUFFER: return RADEON_GEM_DOMAIN_VRAM; | ||
205 | default: return RADEON_GEM_DOMAIN_GTT; | ||
206 | } | ||
207 | } | ||
208 | |||
209 | static int init_sa_manager(struct kgd_dev *kgd, unsigned int size) | ||
210 | { | ||
211 | struct radeon_device *rdev = (struct radeon_device *)kgd; | ||
212 | int r; | ||
213 | |||
214 | BUG_ON(kgd == NULL); | ||
215 | |||
216 | r = radeon_sa_bo_manager_init(rdev, &rdev->kfd_bo, | ||
217 | size, | ||
218 | RADEON_GPU_PAGE_SIZE, | ||
219 | RADEON_GEM_DOMAIN_GTT, | ||
220 | RADEON_GEM_GTT_WC); | ||
221 | |||
222 | if (r) | ||
223 | return r; | ||
224 | |||
225 | r = radeon_sa_bo_manager_start(rdev, &rdev->kfd_bo); | ||
226 | if (r) | ||
227 | radeon_sa_bo_manager_fini(rdev, &rdev->kfd_bo); | ||
228 | |||
229 | return r; | ||
230 | } | ||
231 | |||
232 | static void fini_sa_manager(struct kgd_dev *kgd) | ||
233 | { | ||
234 | struct radeon_device *rdev = (struct radeon_device *)kgd; | ||
235 | |||
236 | BUG_ON(kgd == NULL); | ||
237 | |||
238 | radeon_sa_bo_manager_suspend(rdev, &rdev->kfd_bo); | ||
239 | radeon_sa_bo_manager_fini(rdev, &rdev->kfd_bo); | ||
240 | } | ||
241 | |||
242 | static int allocate_mem(struct kgd_dev *kgd, size_t size, size_t alignment, | ||
243 | enum kgd_memory_pool pool, struct kgd_mem **mem) | ||
244 | { | ||
245 | struct radeon_device *rdev = (struct radeon_device *)kgd; | ||
246 | u32 domain; | ||
247 | int r; | ||
248 | |||
249 | BUG_ON(kgd == NULL); | ||
250 | |||
251 | domain = pool_to_domain(pool); | ||
252 | if (domain != RADEON_GEM_DOMAIN_GTT) { | ||
253 | dev_err(rdev->dev, | ||
254 | "Only allowed to allocate gart memory for kfd\n"); | ||
255 | return -EINVAL; | ||
256 | } | ||
257 | |||
258 | *mem = kmalloc(sizeof(struct kgd_mem), GFP_KERNEL); | ||
259 | if ((*mem) == NULL) | ||
260 | return -ENOMEM; | ||
261 | |||
262 | r = radeon_sa_bo_new(rdev, &rdev->kfd_bo, &(*mem)->sa_bo, size, | ||
263 | alignment); | ||
264 | if (r) { | ||
265 | dev_err(rdev->dev, "failed to get memory for kfd (%d)\n", r); | ||
266 | return r; | ||
267 | } | ||
268 | |||
269 | (*mem)->ptr = radeon_sa_bo_cpu_addr((*mem)->sa_bo); | ||
270 | (*mem)->gpu_addr = radeon_sa_bo_gpu_addr((*mem)->sa_bo); | ||
271 | |||
272 | return 0; | ||
273 | } | ||
274 | |||
275 | static void free_mem(struct kgd_dev *kgd, struct kgd_mem *mem) | ||
276 | { | ||
277 | struct radeon_device *rdev = (struct radeon_device *)kgd; | ||
278 | |||
279 | BUG_ON(kgd == NULL); | ||
280 | |||
281 | radeon_sa_bo_free(rdev, &mem->sa_bo, NULL); | ||
282 | kfree(mem); | ||
283 | } | ||
284 | |||
285 | static int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, | 188 | static int alloc_gtt_mem(struct kgd_dev *kgd, size_t size, |
286 | void **mem_obj, uint64_t *gpu_addr, | 189 | void **mem_obj, uint64_t *gpu_addr, |
287 | void **cpu_ptr) | 190 | void **cpu_ptr) |