drm/panfrost: Expose a helper to trigger a GPU reset
authorBoris Brezillon <boris.brezillon@collabora.com>
Wed, 30 Jun 2021 06:27:42 +0000 (08:27 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Thu, 1 Jul 2021 06:53:30 +0000 (08:53 +0200)
Expose a helper to trigger a GPU reset so we can easily trigger reset
operations outside the job timeout handler.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210630062751.2832545-8-boris.brezillon@collabora.com
drivers/gpu/drm/panfrost/panfrost_device.h
drivers/gpu/drm/panfrost/panfrost_job.c

index 3639288..aec11b6 100644 (file)
@@ -244,4 +244,12 @@ enum drm_panfrost_exception_type {
 
 const char *panfrost_exception_name(u32 exception_code);
 
+static inline void
+panfrost_device_schedule_reset(struct panfrost_device *pfdev)
+{
+       /* Schedule a reset if there's no reset in progress. */
+       if (!atomic_xchg(&pfdev->reset.pending, 1))
+               schedule_work(&pfdev->reset.work);
+}
+
 #endif
index ea3432f..12285a2 100644 (file)
@@ -447,9 +447,7 @@ static enum drm_gpu_sched_stat panfrost_job_timedout(struct drm_sched_job
        if (!panfrost_scheduler_stop(&pfdev->js->queue[js], sched_job))
                return DRM_GPU_SCHED_STAT_NOMINAL;
 
-       /* Schedule a reset if there's no reset in progress. */
-       if (!atomic_xchg(&pfdev->reset.pending, 1))
-               schedule_work(&pfdev->reset.work);
+       panfrost_device_schedule_reset(pfdev);
 
        return DRM_GPU_SCHED_STAT_NOMINAL;
 }