Commit 80f3c51b authored by Philipp Stanner's avatar Philipp Stanner
Browse files

drm/sched/tests: Use one lock for fence context



There is no need for separate locks for single jobs and the entire
scheduler. The dma_fence context can be protected by the scheduler lock,
allowing for removing the jobs' locks. This simplifies things and
reduces the likelyhood of deadlocks etc.

Replace the jobs' locks with the mock scheduler lock.

Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: default avatarPhilipp Stanner <phasta@kernel.org>
Link: https://lore.kernel.org/r/20250527101029.56491-2-phasta@kernel.org
parent e42a3c20
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ static void drm_mock_sched_job_complete(struct drm_mock_sched_job *job)

	job->flags |= DRM_MOCK_SCHED_JOB_DONE;
	list_move_tail(&job->link, &sched->done_list);
	dma_fence_signal(&job->hw_fence);
	dma_fence_signal_locked(&job->hw_fence);
	complete(&job->done);
}

@@ -124,7 +124,6 @@ drm_mock_sched_job_new(struct kunit *test,
	job->test = test;

	init_completion(&job->done);
	spin_lock_init(&job->lock);
	INIT_LIST_HEAD(&job->link);
	hrtimer_setup(&job->timer, drm_mock_sched_job_signal_timer,
		      CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
@@ -170,7 +169,7 @@ static struct dma_fence *mock_sched_run_job(struct drm_sched_job *sched_job)

	dma_fence_init(&job->hw_fence,
		       &drm_mock_sched_hw_fence_ops,
		       &job->lock,
		       &sched->lock,
		       sched->hw_timeline.context,
		       atomic_inc_return(&sched->hw_timeline.next_seqno));

+0 −1
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ struct drm_mock_sched_job {
	unsigned int		duration_us;
	ktime_t			finish_at;

	spinlock_t		lock;
	struct dma_fence	hw_fence;

	struct kunit		*test;