Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: use kernel fence for vce ib test

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>

authored by

Chunming Zhou and committed by
Alex Deucher
ed40bfb8 0e3f154a

+12 -11
+3 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_test.c
··· 260 260 261 261 } else if (ring == &adev->vce.ring[0] || 262 262 ring == &adev->vce.ring[1]) { 263 + struct fence *f = NULL; 263 264 r = amdgpu_vce_get_create_msg(ring, handle, NULL); 264 265 if (r) { 265 266 DRM_ERROR("Failed to get dummy create msg\n"); 266 267 return r; 267 268 } 268 269 269 - r = amdgpu_vce_get_destroy_msg(ring, handle, fence); 270 + r = amdgpu_vce_get_destroy_msg(ring, handle, &f); 270 271 if (r) { 271 272 DRM_ERROR("Failed to get dummy destroy msg\n"); 272 273 return r; 273 274 } 274 - 275 + *fence = to_amdgpu_fence(f); 275 276 } else { 276 277 r = amdgpu_ring_lock(ring, 64); 277 278 if (r) {
+7 -7
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
··· 358 358 * Open up a stream for HW test 359 359 */ 360 360 int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle, 361 - struct amdgpu_fence **fence) 361 + struct fence **fence) 362 362 { 363 363 const unsigned ib_size_dw = 1024; 364 364 struct amdgpu_ib *ib = NULL; ··· 412 412 if (r) 413 413 goto err; 414 414 if (fence) 415 - *fence = amdgpu_fence_ref(ib->fence); 415 + *fence = fence_get(&ib->fence->base); 416 416 if (amdgpu_enable_scheduler) 417 417 return 0; 418 418 err: ··· 432 432 * Close up a stream for HW test or if userspace failed to do so 433 433 */ 434 434 int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle, 435 - struct amdgpu_fence **fence) 435 + struct fence **fence) 436 436 { 437 437 const unsigned ib_size_dw = 1024; 438 438 struct amdgpu_ib *ib = NULL; ··· 476 476 if (r) 477 477 goto err; 478 478 if (fence) 479 - *fence = amdgpu_fence_ref(ib->fence); 479 + *fence = fence_get(&ib->fence->base); 480 480 if (amdgpu_enable_scheduler) 481 481 return 0; 482 482 err: ··· 827 827 */ 828 828 int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring) 829 829 { 830 - struct amdgpu_fence *fence = NULL; 830 + struct fence *fence = NULL; 831 831 int r; 832 832 833 833 r = amdgpu_vce_get_create_msg(ring, 1, NULL); ··· 842 842 goto error; 843 843 } 844 844 845 - r = amdgpu_fence_wait(fence, false); 845 + r = fence_wait(fence, false); 846 846 if (r) { 847 847 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 848 848 } else { 849 849 DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 850 850 } 851 851 error: 852 - amdgpu_fence_unref(&fence); 852 + fence_put(fence); 853 853 return r; 854 854 }
+2 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.h
··· 29 29 int amdgpu_vce_suspend(struct amdgpu_device *adev); 30 30 int amdgpu_vce_resume(struct amdgpu_device *adev); 31 31 int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle, 32 - struct amdgpu_fence **fence); 32 + struct fence **fence); 33 33 int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle, 34 - struct amdgpu_fence **fence); 34 + struct fence **fence); 35 35 void amdgpu_vce_free_handles(struct amdgpu_device *adev, struct drm_file *filp); 36 36 int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx); 37 37 bool amdgpu_vce_ring_emit_semaphore(struct amdgpu_ring *ring,