]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/gpu/drm/radeon/radeon_object.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / gpu / drm / radeon / radeon_object.c
index a598d0049aa5938900a84c656c3cd9677010ee20..7d6b8e88f7469f09028e45253b7e5f7eea12feae 100644 (file)
@@ -34,6 +34,7 @@
 #include <drm/drmP.h>
 #include "radeon_drm.h"
 #include "radeon.h"
+#include "radeon_trace.h"
 
 
 int radeon_ttm_init(struct radeon_device *rdev);
@@ -146,6 +147,7 @@ retry:
                list_add_tail(&bo->list, &rdev->gem.objects);
                mutex_unlock(&bo->rdev->gem.mutex);
        }
+       trace_radeon_bo_create(bo);
        return 0;
 }
 
@@ -302,34 +304,9 @@ void radeon_bo_list_add_object(struct radeon_bo_list *lobj,
                                struct list_head *head)
 {
        if (lobj->wdomain) {
-               list_add(&lobj->list, head);
+               list_add(&lobj->tv.head, head);
        } else {
-               list_add_tail(&lobj->list, head);
-       }
-}
-
-int radeon_bo_list_reserve(struct list_head *head)
-{
-       struct radeon_bo_list *lobj;
-       int r;
-
-       list_for_each_entry(lobj, head, list){
-               r = radeon_bo_reserve(lobj->bo, false);
-               if (unlikely(r != 0))
-                       return r;
-               lobj->reserved = true;
-       }
-       return 0;
-}
-
-void radeon_bo_list_unreserve(struct list_head *head)
-{
-       struct radeon_bo_list *lobj;
-
-       list_for_each_entry(lobj, head, list) {
-               /* only unreserve object we successfully reserved */
-               if (lobj->reserved && radeon_bo_is_reserved(lobj->bo))
-                       radeon_bo_unreserve(lobj->bo);
+               list_add_tail(&lobj->tv.head, head);
        }
 }
 
@@ -340,14 +317,11 @@ int radeon_bo_list_validate(struct list_head *head)
        u32 domain;
        int r;
 
-       list_for_each_entry(lobj, head, list) {
-               lobj->reserved = false;
-       }
-       r = radeon_bo_list_reserve(head);
+       r = ttm_eu_reserve_buffers(head);
        if (unlikely(r != 0)) {
                return r;
        }
-       list_for_each_entry(lobj, head, list) {
+       list_for_each_entry(lobj, head, tv.head) {
                bo = lobj->bo;
                if (!bo->pin_count) {
                        domain = lobj->wdomain ? lobj->wdomain : lobj->rdomain;
@@ -370,25 +344,6 @@ int radeon_bo_list_validate(struct list_head *head)
        return 0;
 }
 
-void radeon_bo_list_fence(struct list_head *head, void *fence)
-{
-       struct radeon_bo_list *lobj;
-       struct radeon_bo *bo;
-       struct radeon_fence *old_fence = NULL;
-
-       list_for_each_entry(lobj, head, list) {
-               bo = lobj->bo;
-               spin_lock(&bo->tbo.lock);
-               old_fence = (struct radeon_fence *)bo->tbo.sync_obj;
-               bo->tbo.sync_obj = radeon_fence_ref(fence);
-               bo->tbo.sync_obj_arg = NULL;
-               spin_unlock(&bo->tbo.lock);
-               if (old_fence) {
-                       radeon_fence_unref(&old_fence);
-               }
-       }
-}
-
 int radeon_bo_fbdev_mmap(struct radeon_bo *bo,
                             struct vm_area_struct *vma)
 {