drm/amdgpu: use kernel fence for vce ib test
authorChunming Zhou <david1.zhou@amd.com>
Mon, 3 Aug 2015 05:28:16 +0000 (13:28 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 17 Aug 2015 20:50:52 +0000 (16:50 -0400)
Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Christian K?nig <christian.koenig@amd.com>
Reviewed-by: Jammy Zhou <jammy.zhou@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_test.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h

index 567c5b3c6f3a0ddb0879b1dd214c240a16200bf9..251b1ebef72240523ff06174f2c2b82a956aa639 100644 (file)
@@ -260,18 +260,19 @@ static int amdgpu_test_create_and_emit_fence(struct amdgpu_device *adev,
 
        } else if (ring == &adev->vce.ring[0] ||
                   ring == &adev->vce.ring[1]) {
+               struct fence *f = NULL;
                r = amdgpu_vce_get_create_msg(ring, handle, NULL);
                if (r) {
                        DRM_ERROR("Failed to get dummy create msg\n");
                        return r;
                }
 
-               r = amdgpu_vce_get_destroy_msg(ring, handle, fence);
+               r = amdgpu_vce_get_destroy_msg(ring, handle, &f);
                if (r) {
                        DRM_ERROR("Failed to get dummy destroy msg\n");
                        return r;
                }
-
+               *fence = to_amdgpu_fence(f);
        } else {
                r = amdgpu_ring_lock(ring, 64);
                if (r) {
index 59acb0b990e174fb97219b02e6e7bc56c0334e2e..94c40ca5ba74b3f832609d0547c5cb85c7a085eb 100644 (file)
@@ -358,7 +358,7 @@ static int amdgpu_vce_free_job(
  * Open up a stream for HW test
  */
 int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
-                             struct amdgpu_fence **fence)
+                             struct fence **fence)
 {
        const unsigned ib_size_dw = 1024;
        struct amdgpu_ib *ib = NULL;
@@ -412,7 +412,7 @@ int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
        if (r)
                goto err;
        if (fence)
-               *fence = amdgpu_fence_ref(ib->fence);
+               *fence = fence_get(&ib->fence->base);
        if (amdgpu_enable_scheduler)
                return 0;
 err:
@@ -432,7 +432,7 @@ err:
  * Close up a stream for HW test or if userspace failed to do so
  */
 int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
-                              struct amdgpu_fence **fence)
+                              struct fence **fence)
 {
        const unsigned ib_size_dw = 1024;
        struct amdgpu_ib *ib = NULL;
@@ -476,7 +476,7 @@ int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
        if (r)
                goto err;
        if (fence)
-               *fence = amdgpu_fence_ref(ib->fence);
+               *fence = fence_get(&ib->fence->base);
        if (amdgpu_enable_scheduler)
                return 0;
 err:
@@ -827,7 +827,7 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring)
  */
 int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring)
 {
-       struct amdgpu_fence *fence = NULL;
+       struct fence *fence = NULL;
        int r;
 
        r = amdgpu_vce_get_create_msg(ring, 1, NULL);
@@ -842,13 +842,13 @@ int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring)
                goto error;
        }
 
-       r = amdgpu_fence_wait(fence, false);
+       r = fence_wait(fence, false);
        if (r) {
                DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
        } else {
                DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
        }
 error:
-       amdgpu_fence_unref(&fence);
+       fence_put(fence);
        return r;
 }
index 7ccdb5927da5ce4bcc7f1db1009c5b5297bca29b..ba2da8ee59067c9e03cf5f02fab64a8a3ef21042 100644 (file)
@@ -29,9 +29,9 @@ int amdgpu_vce_sw_fini(struct amdgpu_device *adev);
 int amdgpu_vce_suspend(struct amdgpu_device *adev);
 int amdgpu_vce_resume(struct amdgpu_device *adev);
 int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
-                             struct amdgpu_fence **fence);
+                             struct fence **fence);
 int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
-                              struct amdgpu_fence **fence);
+                              struct fence **fence);
 void amdgpu_vce_free_handles(struct amdgpu_device *adev, struct drm_file *filp);
 int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx);
 bool amdgpu_vce_ring_emit_semaphore(struct amdgpu_ring *ring,