When the sched thread is parked we assume ring_mirror_list is
not accessed from here.
Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
        struct drm_sched_job *job;
        unsigned long flags;
 
-       /* Don't destroy jobs while the timeout worker is running */
-       if (sched->timeout != MAX_SCHEDULE_TIMEOUT &&
-           !cancel_delayed_work(&sched->work_tdr))
+       /*
+        * Don't destroy jobs while the timeout worker is running  OR thread
+        * is being parked and hence assumed to not touch ring_mirror_list
+        */
+       if ((sched->timeout != MAX_SCHEDULE_TIMEOUT &&
+           !cancel_delayed_work(&sched->work_tdr)) ||
+           __kthread_should_park(sched->thread))
                return NULL;
 
        spin_lock_irqsave(&sched->job_list_lock, flags);