drm/radeon/kms: Rework radeon object handling
[safe/jmp/linux-2.6] / drivers / gpu / drm / radeon / radeon_test.c
index f8a465d..391c973 100644 (file)
@@ -30,8 +30,8 @@
 /* Test BO GTT->VRAM and VRAM->GTT GPU copies across the whole GTT aperture */
 void radeon_test_moves(struct radeon_device *rdev)
 {
-       struct radeon_object *vram_obj = NULL;
-       struct radeon_object **gtt_obj = NULL;
+       struct radeon_bo *vram_obj = NULL;
+       struct radeon_bo **gtt_obj = NULL;
        struct radeon_fence *fence = NULL;
        uint64_t gtt_addr, vram_addr;
        unsigned i, n, size;
@@ -52,38 +52,42 @@ void radeon_test_moves(struct radeon_device *rdev)
                goto out_cleanup;
        }
 
-       r = radeon_object_create(rdev, NULL, size, true, RADEON_GEM_DOMAIN_VRAM,
-                                false, &vram_obj);
+       r = radeon_bo_create(rdev, NULL, size, true, RADEON_GEM_DOMAIN_VRAM,
+                               &vram_obj);
        if (r) {
                DRM_ERROR("Failed to create VRAM object\n");
                goto out_cleanup;
        }
-
-       r = radeon_object_pin(vram_obj, RADEON_GEM_DOMAIN_VRAM, &vram_addr);
+       r = radeon_bo_reserve(vram_obj, false);
+       if (unlikely(r != 0))
+               goto out_cleanup;
+       r = radeon_bo_pin(vram_obj, RADEON_GEM_DOMAIN_VRAM, &vram_addr);
        if (r) {
                DRM_ERROR("Failed to pin VRAM object\n");
                goto out_cleanup;
        }
-
        for (i = 0; i < n; i++) {
                void *gtt_map, *vram_map;
                void **gtt_start, **gtt_end;
                void **vram_start, **vram_end;
 
-               r = radeon_object_create(rdev, NULL, size, true,
-                                        RADEON_GEM_DOMAIN_GTT, false, gtt_obj + i);
+               r = radeon_bo_create(rdev, NULL, size, true,
+                                        RADEON_GEM_DOMAIN_GTT, gtt_obj + i);
                if (r) {
                        DRM_ERROR("Failed to create GTT object %d\n", i);
                        goto out_cleanup;
                }
 
-               r = radeon_object_pin(gtt_obj[i], RADEON_GEM_DOMAIN_GTT, &gtt_addr);
+               r = radeon_bo_reserve(gtt_obj[i], false);
+               if (unlikely(r != 0))
+                       goto out_cleanup;
+               r = radeon_bo_pin(gtt_obj[i], RADEON_GEM_DOMAIN_GTT, &gtt_addr);
                if (r) {
                        DRM_ERROR("Failed to pin GTT object %d\n", i);
                        goto out_cleanup;
                }
 
-               r = radeon_object_kmap(gtt_obj[i], &gtt_map);
+               r = radeon_bo_kmap(gtt_obj[i], &gtt_map);
                if (r) {
                        DRM_ERROR("Failed to map GTT object %d\n", i);
                        goto out_cleanup;
@@ -94,7 +98,7 @@ void radeon_test_moves(struct radeon_device *rdev)
                     gtt_start++)
                        *gtt_start = gtt_start;
 
-               radeon_object_kunmap(gtt_obj[i]);
+               radeon_bo_kunmap(gtt_obj[i]);
 
                r = radeon_fence_create(rdev, &fence);
                if (r) {
@@ -116,7 +120,7 @@ void radeon_test_moves(struct radeon_device *rdev)
 
                radeon_fence_unref(&fence);
 
-               r = radeon_object_kmap(vram_obj, &vram_map);
+               r = radeon_bo_kmap(vram_obj, &vram_map);
                if (r) {
                        DRM_ERROR("Failed to map VRAM object after copy %d\n", i);
                        goto out_cleanup;
@@ -131,13 +135,13 @@ void radeon_test_moves(struct radeon_device *rdev)
                                          "expected 0x%p (GTT map 0x%p-0x%p)\n",
                                          i, *vram_start, gtt_start, gtt_map,
                                          gtt_end);
-                               radeon_object_kunmap(vram_obj);
+                               radeon_bo_kunmap(vram_obj);
                                goto out_cleanup;
                        }
                        *vram_start = vram_start;
                }
 
-               radeon_object_kunmap(vram_obj);
+               radeon_bo_kunmap(vram_obj);
 
                r = radeon_fence_create(rdev, &fence);
                if (r) {
@@ -159,7 +163,7 @@ void radeon_test_moves(struct radeon_device *rdev)
 
                radeon_fence_unref(&fence);
 
-               r = radeon_object_kmap(gtt_obj[i], &gtt_map);
+               r = radeon_bo_kmap(gtt_obj[i], &gtt_map);
                if (r) {
                        DRM_ERROR("Failed to map GTT object after copy %d\n", i);
                        goto out_cleanup;
@@ -174,12 +178,12 @@ void radeon_test_moves(struct radeon_device *rdev)
                                          "expected 0x%p (VRAM map 0x%p-0x%p)\n",
                                          i, *gtt_start, vram_start, vram_map,
                                          vram_end);
-                               radeon_object_kunmap(gtt_obj[i]);
+                               radeon_bo_kunmap(gtt_obj[i]);
                                goto out_cleanup;
                        }
                }
 
-               radeon_object_kunmap(gtt_obj[i]);
+               radeon_bo_kunmap(gtt_obj[i]);
 
                DRM_INFO("Tested GTT->VRAM and VRAM->GTT copy for GTT offset 0x%llx\n",
                         gtt_addr - rdev->mc.gtt_location);
@@ -187,14 +191,20 @@ void radeon_test_moves(struct radeon_device *rdev)
 
 out_cleanup:
        if (vram_obj) {
-               radeon_object_unpin(vram_obj);
-               radeon_object_unref(&vram_obj);
+               if (radeon_bo_is_reserved(vram_obj)) {
+                       radeon_bo_unpin(vram_obj);
+                       radeon_bo_unreserve(vram_obj);
+               }
+               radeon_bo_unref(&vram_obj);
        }
        if (gtt_obj) {
                for (i = 0; i < n; i++) {
                        if (gtt_obj[i]) {
-                               radeon_object_unpin(gtt_obj[i]);
-                               radeon_object_unref(&gtt_obj[i]);
+                               if (radeon_bo_is_reserved(gtt_obj[i])) {
+                                       radeon_bo_unpin(gtt_obj[i]);
+                                       radeon_bo_unreserve(gtt_obj[i]);
+                               }
+                               radeon_bo_unref(&gtt_obj[i]);
                        }
                }
                kfree(gtt_obj);
@@ -206,4 +216,3 @@ out_cleanup:
                printk(KERN_WARNING "Error while testing BO move.\n");
        }
 }
-