Merge drm/drm-next into drm-misc-next
[sfrench/cifs-2.6.git] / drivers / gpu / drm / nouveau / nouveau_sched.c
index 1b2cc3f2e1c7e870997d093e4c3ff4692a8738f3..e03fd2bc8a11bdfe50707be14cc64dc7f6587629 100644 (file)
@@ -375,14 +375,20 @@ nouveau_sched_run_job(struct drm_sched_job *sched_job)
 static enum drm_gpu_sched_stat
 nouveau_sched_timedout_job(struct drm_sched_job *sched_job)
 {
+       struct drm_gpu_scheduler *sched = sched_job->sched;
        struct nouveau_job *job = to_nouveau_job(sched_job);
+       enum drm_gpu_sched_stat stat = DRM_GPU_SCHED_STAT_NOMINAL;
 
-       NV_PRINTK(warn, job->cli, "Job timed out.\n");
+       drm_sched_stop(sched, sched_job);
 
        if (job->ops->timeout)
-               return job->ops->timeout(job);
+               stat = job->ops->timeout(job);
+       else
+               NV_PRINTK(warn, job->cli, "Generic job timeout.\n");
+
+       drm_sched_start(sched, true);
 
-       return DRM_GPU_SCHED_STAT_ENODEV;
+       return stat;
 }
 
 static void