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

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

drm/amdgpu: add sched isr to fence process

parent d5fc5e82
Loading
Loading
Loading
Loading
+17 −1
Original line number Diff line number Diff line
@@ -346,9 +346,25 @@ void amdgpu_fence_process(struct amdgpu_ring *ring)
		}
	} while (atomic64_xchg(&ring->fence_drv.last_seq, seq) > seq);

	if (wake)
	if (wake) {
		if (amdgpu_enable_scheduler) {
			uint64_t handled_seq =
				amd_sched_get_handled_seq(ring->scheduler);
			uint64_t latest_seq =
				atomic64_read(&ring->fence_drv.last_seq);
			if (handled_seq == latest_seq) {
				DRM_ERROR("ring %d, EOP without seq update (lastest_seq=%llu)\n",
					  ring->idx, latest_seq);
				return;
			}
			do {
				amd_sched_isr(ring->scheduler);
			} while (amd_sched_get_handled_seq(ring->scheduler) < latest_seq);
		}

		wake_up_all(&ring->adev->fence_queue);
	}
}

/**
 * amdgpu_fence_seq_signaled - check if a fence sequence number has signaled