Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 281b4223 authored by Chunming Zhou's avatar Chunming Zhou Committed by Alex Deucher
Browse files

drm/amdgpu: add reference for **fence



fix fence is released when pass to **fence sometimes.
add reference for it.

Signed-off-by: default avatarChunming Zhou <david1.zhou@amd.com>
Reviewed-by: default avatarChristian K?nig <christian.koenig@amd.com>
parent 1ffd2652
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -136,6 +136,7 @@ static void amdgpu_job_work_func(struct work_struct *work)
		sched_job->free_job(sched_job);
	mutex_unlock(&sched_job->job_lock);
	/* after processing job, free memory */
	fence_put(&sched_job->s_fence->base);
	kfree(sched_job);
}
struct amdgpu_cs_parser *amdgpu_cs_parser_create(struct amdgpu_device *adev,
+2 −2
Original line number Diff line number Diff line
@@ -133,13 +133,13 @@ int amdgpu_sched_ib_submit_kernel_helper(struct amdgpu_device *adev,
			return r;
		}
		ibs[num_ibs - 1].sequence = sched_job->s_fence->v_seq;
		*f = &sched_job->s_fence->base;
		*f = fence_get(&sched_job->s_fence->base);
		mutex_unlock(&sched_job->job_lock);
	} else {
		r = amdgpu_ib_schedule(adev, num_ibs, ibs, owner);
		if (r)
			return r;
		*f = &ibs[num_ibs - 1].fence->base;
		*f = fence_get(&ibs[num_ibs - 1].fence->base);
	}
	return 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -877,7 +877,7 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring,
	if (fence)
		*fence = fence_get(f);
	amdgpu_bo_unref(&bo);

	fence_put(f);
	if (amdgpu_enable_scheduler)
		return 0;

+2 −0
Original line number Diff line number Diff line
@@ -415,6 +415,7 @@ int amdgpu_vce_get_create_msg(struct amdgpu_ring *ring, uint32_t handle,
		goto err;
	if (fence)
		*fence = fence_get(f);
	fence_put(f);
	if (amdgpu_enable_scheduler)
		return 0;
err:
@@ -481,6 +482,7 @@ int amdgpu_vce_get_destroy_msg(struct amdgpu_ring *ring, uint32_t handle,
		goto err;
	if (fence)
		*fence = fence_get(f);
	fence_put(f);
	if (amdgpu_enable_scheduler)
		return 0;
err:
+3 −0
Original line number Diff line number Diff line
@@ -366,6 +366,7 @@ static int amdgpu_vm_clear_bo(struct amdgpu_device *adev,
						 &fence);
	if (!r)
		amdgpu_bo_fence(bo, fence, true);
	fence_put(fence);
	if (amdgpu_enable_scheduler) {
		amdgpu_bo_unreserve(bo);
		return 0;
@@ -495,6 +496,7 @@ int amdgpu_vm_update_page_directory(struct amdgpu_device *adev,
		if (r)
			goto error_free;
		amdgpu_bo_fence(pd, fence, true);
		fence_put(fence);
	}

	if (!amdgpu_enable_scheduler || ib->length_dw == 0) {
@@ -812,6 +814,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev,
		fence_put(*fence);
		*fence = fence_get(f);
	}
	fence_put(f);
	if (!amdgpu_enable_scheduler) {
		amdgpu_ib_free(adev, ib);
		kfree(ib);
Loading