aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_object.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_object.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_object.c55
1 files changed, 4 insertions, 51 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_object.c b/drivers/gpu/drm/radeon/radeon_object.c
index e939cb6a91cc..a8594d289bcf 100644
--- a/drivers/gpu/drm/radeon/radeon_object.c
+++ b/drivers/gpu/drm/radeon/radeon_object.c
@@ -293,34 +293,9 @@ void radeon_bo_list_add_object(struct radeon_bo_list *lobj,
293 struct list_head *head) 293 struct list_head *head)
294{ 294{
295 if (lobj->wdomain) { 295 if (lobj->wdomain) {
296 list_add(&lobj->list, head); 296 list_add(&lobj->tv.head, head);
297 } else { 297 } else {
298 list_add_tail(&lobj->list, head); 298 list_add_tail(&lobj->tv.head, head);
299 }
300}
301
302int radeon_bo_list_reserve(struct list_head *head)
303{
304 struct radeon_bo_list *lobj;
305 int r;
306
307 list_for_each_entry(lobj, head, list){
308 r = radeon_bo_reserve(lobj->bo, false);
309 if (unlikely(r != 0))
310 return r;
311 lobj->reserved = true;
312 }
313 return 0;
314}
315
316void radeon_bo_list_unreserve(struct list_head *head)
317{
318 struct radeon_bo_list *lobj;
319
320 list_for_each_entry(lobj, head, list) {
321 /* only unreserve object we successfully reserved */
322 if (lobj->reserved && radeon_bo_is_reserved(lobj->bo))
323 radeon_bo_unreserve(lobj->bo);
324 } 299 }
325} 300}
326 301
@@ -331,14 +306,11 @@ int radeon_bo_list_validate(struct list_head *head)
331 u32 domain; 306 u32 domain;
332 int r; 307 int r;
333 308
334 list_for_each_entry(lobj, head, list) { 309 r = ttm_eu_reserve_buffers(head);
335 lobj->reserved = false;
336 }
337 r = radeon_bo_list_reserve(head);
338 if (unlikely(r != 0)) { 310 if (unlikely(r != 0)) {
339 return r; 311 return r;
340 } 312 }
341 list_for_each_entry(lobj, head, list) { 313 list_for_each_entry(lobj, head, tv.head) {
342 bo = lobj->bo; 314 bo = lobj->bo;
343 if (!bo->pin_count) { 315 if (!bo->pin_count) {
344 domain = lobj->wdomain ? lobj->wdomain : lobj->rdomain; 316 domain = lobj->wdomain ? lobj->wdomain : lobj->rdomain;
@@ -361,25 +333,6 @@ int radeon_bo_list_validate(struct list_head *head)
361 return 0; 333 return 0;
362} 334}
363 335
364void radeon_bo_list_fence(struct list_head *head, void *fence)
365{
366 struct radeon_bo_list *lobj;
367 struct radeon_bo *bo;
368 struct radeon_fence *old_fence = NULL;
369
370 list_for_each_entry(lobj, head, list) {
371 bo = lobj->bo;
372 spin_lock(&bo->tbo.bdev->fence_lock);
373 old_fence = (struct radeon_fence *)bo->tbo.sync_obj;
374 bo->tbo.sync_obj = radeon_fence_ref(fence);
375 bo->tbo.sync_obj_arg = NULL;
376 spin_unlock(&bo->tbo.bdev->fence_lock);
377 if (old_fence) {
378 radeon_fence_unref(&old_fence);
379 }
380 }
381}
382
383int radeon_bo_fbdev_mmap(struct radeon_bo *bo, 336int radeon_bo_fbdev_mmap(struct radeon_bo *bo,
384 struct vm_area_struct *vma) 337 struct vm_area_struct *vma)
385{ 338{