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

Commit 6201e033 authored by Nayan Deshmukh's avatar Nayan Deshmukh Committed by Alex Deucher
Browse files

drm/scheduler: fix a corner case in dependency optimization



When checking for a dependency fence for belonging to the same entity
compare it with scheduled as well finished fence. Earlier we were only
comparing it with the scheduled fence.

Signed-off-by: default avatarNayan Deshmukh <nayan26deshmukh@gmail.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent adea72c5
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -349,8 +349,13 @@ static bool drm_sched_entity_add_dependency_cb(struct drm_sched_entity *entity)
	struct dma_fence * fence = entity->dependency;
	struct drm_sched_fence *s_fence;

	if (fence->context == entity->fence_context) {
		/* We can ignore fences from ourself */
	if (fence->context == entity->fence_context ||
            fence->context == entity->fence_context + 1) {
                /*
                 * Fence is a scheduled/finished fence from a job
                 * which belongs to the same entity, we can ignore
                 * fences from ourself
                 */
		dma_fence_put(entity->dependency);
		return false;
	}