diff options
Diffstat (limited to 'drivers/gpu/drm/v3d/v3d_sched.c')
| -rw-r--r-- | drivers/gpu/drm/v3d/v3d_sched.c | 42 | 
1 files changed, 22 insertions, 20 deletions
| diff --git a/drivers/gpu/drm/v3d/v3d_sched.c b/drivers/gpu/drm/v3d/v3d_sched.c index 452682e2209f..8992480c88fa 100644 --- a/drivers/gpu/drm/v3d/v3d_sched.c +++ b/drivers/gpu/drm/v3d/v3d_sched.c @@ -259,7 +259,7 @@ v3d_cache_clean_job_run(struct drm_sched_job *sched_job)  	return NULL;  } -static void +static enum drm_gpu_sched_stat  v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job)  {  	enum v3d_queue q; @@ -285,6 +285,8 @@ v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job)  	}  	mutex_unlock(&v3d->reset_lock); + +	return DRM_GPU_SCHED_STAT_NOMINAL;  }  /* If the current address or return address have changed, then the GPU @@ -292,7 +294,7 @@ v3d_gpu_reset_for_timeout(struct v3d_dev *v3d, struct drm_sched_job *sched_job)   * could fail if the GPU got in an infinite loop in the CL, but that   * is pretty unlikely outside of an i-g-t testcase.   */ -static void +static enum drm_gpu_sched_stat  v3d_cl_job_timedout(struct drm_sched_job *sched_job, enum v3d_queue q,  		    u32 *timedout_ctca, u32 *timedout_ctra)  { @@ -304,39 +306,39 @@ v3d_cl_job_timedout(struct drm_sched_job *sched_job, enum v3d_queue q,  	if (*timedout_ctca != ctca || *timedout_ctra != ctra) {  		*timedout_ctca = ctca;  		*timedout_ctra = ctra; -		return; +		return DRM_GPU_SCHED_STAT_NOMINAL;  	} -	v3d_gpu_reset_for_timeout(v3d, sched_job); +	return v3d_gpu_reset_for_timeout(v3d, sched_job);  } -static void +static enum drm_gpu_sched_stat  v3d_bin_job_timedout(struct drm_sched_job *sched_job)  {  	struct v3d_bin_job *job = to_bin_job(sched_job); -	v3d_cl_job_timedout(sched_job, V3D_BIN, -			    &job->timedout_ctca, &job->timedout_ctra); +	return v3d_cl_job_timedout(sched_job, V3D_BIN, +				   &job->timedout_ctca, &job->timedout_ctra);  } -static void +static enum drm_gpu_sched_stat  v3d_render_job_timedout(struct drm_sched_job *sched_job)  {  	struct v3d_render_job *job = to_render_job(sched_job); -	v3d_cl_job_timedout(sched_job, V3D_RENDER, -			    &job->timedout_ctca, &job->timedout_ctra); +	return v3d_cl_job_timedout(sched_job, V3D_RENDER, +				   &job->timedout_ctca, &job->timedout_ctra);  } -static void +static enum drm_gpu_sched_stat  v3d_generic_job_timedout(struct drm_sched_job *sched_job)  {  	struct v3d_job *job = to_v3d_job(sched_job); -	v3d_gpu_reset_for_timeout(job->v3d, sched_job); +	return v3d_gpu_reset_for_timeout(job->v3d, sched_job);  } -static void +static enum drm_gpu_sched_stat  v3d_csd_job_timedout(struct drm_sched_job *sched_job)  {  	struct v3d_csd_job *job = to_csd_job(sched_job); @@ -348,10 +350,10 @@ v3d_csd_job_timedout(struct drm_sched_job *sched_job)  	 */  	if (job->timedout_batches != batches) {  		job->timedout_batches = batches; -		return; +		return DRM_GPU_SCHED_STAT_NOMINAL;  	} -	v3d_gpu_reset_for_timeout(v3d, sched_job); +	return v3d_gpu_reset_for_timeout(v3d, sched_job);  }  static const struct drm_sched_backend_ops v3d_bin_sched_ops = { @@ -401,7 +403,7 @@ v3d_sched_init(struct v3d_dev *v3d)  			     &v3d_bin_sched_ops,  			     hw_jobs_limit, job_hang_limit,  			     msecs_to_jiffies(hang_limit_ms), -			     "v3d_bin"); +			     NULL, "v3d_bin");  	if (ret) {  		dev_err(v3d->drm.dev, "Failed to create bin scheduler: %d.", ret);  		return ret; @@ -411,7 +413,7 @@ v3d_sched_init(struct v3d_dev *v3d)  			     &v3d_render_sched_ops,  			     hw_jobs_limit, job_hang_limit,  			     msecs_to_jiffies(hang_limit_ms), -			     "v3d_render"); +			     NULL, "v3d_render");  	if (ret) {  		dev_err(v3d->drm.dev, "Failed to create render scheduler: %d.",  			ret); @@ -423,7 +425,7 @@ v3d_sched_init(struct v3d_dev *v3d)  			     &v3d_tfu_sched_ops,  			     hw_jobs_limit, job_hang_limit,  			     msecs_to_jiffies(hang_limit_ms), -			     "v3d_tfu"); +			     NULL, "v3d_tfu");  	if (ret) {  		dev_err(v3d->drm.dev, "Failed to create TFU scheduler: %d.",  			ret); @@ -436,7 +438,7 @@ v3d_sched_init(struct v3d_dev *v3d)  				     &v3d_csd_sched_ops,  				     hw_jobs_limit, job_hang_limit,  				     msecs_to_jiffies(hang_limit_ms), -				     "v3d_csd"); +				     NULL, "v3d_csd");  		if (ret) {  			dev_err(v3d->drm.dev, "Failed to create CSD scheduler: %d.",  				ret); @@ -448,7 +450,7 @@ v3d_sched_init(struct v3d_dev *v3d)  				     &v3d_cache_clean_sched_ops,  				     hw_jobs_limit, job_hang_limit,  				     msecs_to_jiffies(hang_limit_ms), -				     "v3d_cache_clean"); +				     NULL, "v3d_cache_clean");  		if (ret) {  			dev_err(v3d->drm.dev, "Failed to create CACHE_CLEAN scheduler: %d.",  				ret); | 
