Unverified Commit 0a5dc1b6 authored by Maíra Canal's avatar Maíra Canal
Browse files

drm/sched: Rename DRM_GPU_SCHED_STAT_NOMINAL to DRM_GPU_SCHED_STAT_RESET



Among the scheduler's statuses, the only one that indicates an error is
DRM_GPU_SCHED_STAT_ENODEV. Any status other than DRM_GPU_SCHED_STAT_ENODEV
signifies that the operation succeeded and the GPU is in a nominal state.

However, to provide more information about the GPU's status, it is needed
to convey more information than just "OK".

Therefore, rename DRM_GPU_SCHED_STAT_NOMINAL to
DRM_GPU_SCHED_STAT_RESET, which better communicates the meaning of this
status. The status DRM_GPU_SCHED_STAT_RESET indicates that the GPU has
hung, but it has been successfully reset and is now in a nominal state
again.

Reviewed-by: default avatarPhilipp Stanner <phasta@kernel.org>
Link: https://lore.kernel.org/r/20250714-sched-skip-reset-v6-1-5c5ba4f55039@igalia.com


Signed-off-by: default avatarMaíra Canal <mcanal@igalia.com>
parent fd5fde69
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -361,7 +361,7 @@ aie2_sched_job_timedout(struct drm_sched_job *sched_job)
	aie2_hwctx_restart(xdna, hwctx);
	mutex_unlock(&xdna->dev_lock);

	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;
}

static const struct drm_sched_backend_ops sched_ops = {
+1 −1
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct drm_sched_job *s_job)
exit:
	amdgpu_vm_put_task_info(ti);
	drm_dev_exit(idx);
	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;
}

int amdgpu_job_alloc(struct amdgpu_device *adev, struct amdgpu_vm *vm,
+2 −2
Original line number Diff line number Diff line
@@ -86,11 +86,11 @@ static enum drm_gpu_sched_stat etnaviv_sched_timedout_job(struct drm_sched_job
	drm_sched_resubmit_jobs(&gpu->sched);

	drm_sched_start(&gpu->sched, 0);
	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;

out_no_timeout:
	list_add(&sched_job->list, &sched_job->sched->pending_list);
	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;
}

static void etnaviv_sched_free_job(struct drm_sched_job *sched_job)
+2 −2
Original line number Diff line number Diff line
@@ -803,7 +803,7 @@ static void pvr_queue_start(struct pvr_queue *queue)
 * the scheduler, and re-assign parent fences in the middle.
 *
 * Return:
 *  * DRM_GPU_SCHED_STAT_NOMINAL.
 *  * DRM_GPU_SCHED_STAT_RESET.
 */
static enum drm_gpu_sched_stat
pvr_queue_timedout_job(struct drm_sched_job *s_job)
@@ -854,7 +854,7 @@ pvr_queue_timedout_job(struct drm_sched_job *s_job)

	drm_sched_start(sched, 0);

	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;
}

/**
+3 −3
Original line number Diff line number Diff line
@@ -412,7 +412,7 @@ static enum drm_gpu_sched_stat lima_sched_timedout_job(struct drm_sched_job *job
	 */
	if (dma_fence_is_signaled(task->fence)) {
		DRM_WARN("%s spurious timeout\n", lima_ip_name(ip));
		return DRM_GPU_SCHED_STAT_NOMINAL;
		return DRM_GPU_SCHED_STAT_RESET;
	}

	/*
@@ -429,7 +429,7 @@ static enum drm_gpu_sched_stat lima_sched_timedout_job(struct drm_sched_job *job

	if (dma_fence_is_signaled(task->fence)) {
		DRM_WARN("%s unexpectedly high interrupt latency\n", lima_ip_name(ip));
		return DRM_GPU_SCHED_STAT_NOMINAL;
		return DRM_GPU_SCHED_STAT_RESET;
	}

	/*
@@ -467,7 +467,7 @@ static enum drm_gpu_sched_stat lima_sched_timedout_job(struct drm_sched_job *job
	drm_sched_resubmit_jobs(&pipe->base);
	drm_sched_start(&pipe->base, 0);

	return DRM_GPU_SCHED_STAT_NOMINAL;
	return DRM_GPU_SCHED_STAT_RESET;
}

static void lima_sched_free_job(struct drm_sched_job *job)
Loading