Commit 4f399a08 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: sanitize fence numbers



Looks like the VCE block sometimes still sends nonsense
fence numbers on startup.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 737a44b1
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -204,16 +204,22 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
	if (seq != ring->fence_drv.sync_seq)
		amdgpu_fence_schedule_fallback(ring);

	last_seq &= drv->num_fences_mask;
	seq &= drv->num_fences_mask;

	while (last_seq != seq) {
		struct fence *fence, **ptr;

		ptr = &drv->fences[++last_seq & drv->num_fences_mask];
		++last_seq;
		last_seq &= drv->num_fences_mask;
		ptr = &drv->fences[last_seq];

		/* There is always exactly one thread signaling this fence slot */
		fence = rcu_dereference_protected(*ptr, 1);
		RCU_INIT_POINTER(*ptr, NULL);

		BUG_ON(!fence);
		if (!fence)
			continue;

		r = fence_signal(fence);
		if (!r)