All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Brost <matthew.brost@intel.com>
To: dri-devel@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: robdclark@chromium.org, thomas.hellstrom@linux.intel.com,
	Matthew Brost <matthew.brost@intel.com>,
	lina@asahilina.net, sarah.walker@imgtec.com,
	ketil.johnsen@arm.com, Liviu.Dudau@arm.com, mcanal@igalia.com,
	luben.tuikov@amd.com, dakr@redhat.com, donald.robson@imgtec.com,
	boris.brezillon@collabora.com, christian.koenig@amd.com,
	faith.ekstrand@collabora.com
Subject: [PATCH v5 7/7] drm/sched: Add helper to queue TDR immediately for current and future jobs
Date: Wed, 11 Oct 2023 16:58:26 -0700	[thread overview]
Message-ID: <20231011235826.585624-8-matthew.brost@intel.com> (raw)
In-Reply-To: <20231011235826.585624-1-matthew.brost@intel.com>

Add helper to queue TDR immediately for current and future jobs. This is
used in Xe, a new Intel GPU driver, to trigger a TDR to cleanup a
drm_scheduler that encounter errors.

v2:
 - Drop timeout args, rename function, use mod delayed work (Luben)
v3:
 - s/XE/Xe (Luben)
 - present tense in commit message (Luben)
 - Adjust comment for drm_sched_tdr_queue_imm (Luben)

Cc: Luben Tuikov <luben.tuikov@amd.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/scheduler/sched_main.c | 18 +++++++++++++++++-
 include/drm/gpu_scheduler.h            |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index c4d5c3d265a8..f2846745b067 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -431,7 +431,7 @@ static void drm_sched_start_timeout(struct drm_gpu_scheduler *sched)
 
 	if (sched->timeout != MAX_SCHEDULE_TIMEOUT &&
 	    !list_empty(&sched->pending_list))
-		queue_delayed_work(sched->timeout_wq, &sched->work_tdr, sched->timeout);
+		mod_delayed_work(sched->timeout_wq, &sched->work_tdr, sched->timeout);
 }
 
 static void drm_sched_start_timeout_unlocked(struct drm_gpu_scheduler *sched)
@@ -441,6 +441,22 @@ static void drm_sched_start_timeout_unlocked(struct drm_gpu_scheduler *sched)
 	spin_unlock(&sched->job_list_lock);
 }
 
+/**
+ * drm_sched_tdr_queue_imm: - immediately start job timeout handler
+ *
+ * @sched: scheduler for which the timeout handling should be started.
+ *
+ * Start timeout handling immediately for the named scheduler.
+ */
+void drm_sched_tdr_queue_imm(struct drm_gpu_scheduler *sched)
+{
+	spin_lock(&sched->job_list_lock);
+	sched->timeout = 0;
+	drm_sched_start_timeout(sched);
+	spin_unlock(&sched->job_list_lock);
+}
+EXPORT_SYMBOL(drm_sched_tdr_queue_imm);
+
 /**
  * drm_sched_fault - immediately start timeout handler
  *
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
index 625ffe040de3..998b32b8d212 100644
--- a/include/drm/gpu_scheduler.h
+++ b/include/drm/gpu_scheduler.h
@@ -568,6 +568,7 @@ void drm_sched_entity_modify_sched(struct drm_sched_entity *entity,
 				    struct drm_gpu_scheduler **sched_list,
                                    unsigned int num_sched_list);
 
+void drm_sched_tdr_queue_imm(struct drm_gpu_scheduler *sched);
 void drm_sched_job_cleanup(struct drm_sched_job *job);
 void drm_sched_wakeup_if_can_queue(struct drm_gpu_scheduler *sched);
 bool drm_sched_wqueue_ready(struct drm_gpu_scheduler *sched);
-- 
2.34.1


WARNING: multiple messages have this Message-ID (diff)
From: Matthew Brost <matthew.brost@intel.com>
To: dri-devel@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: robdclark@chromium.org, lina@asahilina.net,
	sarah.walker@imgtec.com, ketil.johnsen@arm.com,
	Liviu.Dudau@arm.com, mcanal@igalia.com, frank.binns@imgtec.com,
	luben.tuikov@amd.com, dakr@redhat.com, donald.robson@imgtec.com,
	daniel@ffwll.ch, boris.brezillon@collabora.com,
	airlied@gmail.com, christian.koenig@amd.com,
	faith.ekstrand@collabora.com
Subject: [Intel-xe] [PATCH v5 7/7] drm/sched: Add helper to queue TDR immediately for current and future jobs
Date: Wed, 11 Oct 2023 16:58:26 -0700	[thread overview]
Message-ID: <20231011235826.585624-8-matthew.brost@intel.com> (raw)
In-Reply-To: <20231011235826.585624-1-matthew.brost@intel.com>

Add helper to queue TDR immediately for current and future jobs. This is
used in Xe, a new Intel GPU driver, to trigger a TDR to cleanup a
drm_scheduler that encounter errors.

v2:
 - Drop timeout args, rename function, use mod delayed work (Luben)
v3:
 - s/XE/Xe (Luben)
 - present tense in commit message (Luben)
 - Adjust comment for drm_sched_tdr_queue_imm (Luben)

Cc: Luben Tuikov <luben.tuikov@amd.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/scheduler/sched_main.c | 18 +++++++++++++++++-
 include/drm/gpu_scheduler.h            |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
index c4d5c3d265a8..f2846745b067 100644
--- a/drivers/gpu/drm/scheduler/sched_main.c
+++ b/drivers/gpu/drm/scheduler/sched_main.c
@@ -431,7 +431,7 @@ static void drm_sched_start_timeout(struct drm_gpu_scheduler *sched)
 
 	if (sched->timeout != MAX_SCHEDULE_TIMEOUT &&
 	    !list_empty(&sched->pending_list))
-		queue_delayed_work(sched->timeout_wq, &sched->work_tdr, sched->timeout);
+		mod_delayed_work(sched->timeout_wq, &sched->work_tdr, sched->timeout);
 }
 
 static void drm_sched_start_timeout_unlocked(struct drm_gpu_scheduler *sched)
@@ -441,6 +441,22 @@ static void drm_sched_start_timeout_unlocked(struct drm_gpu_scheduler *sched)
 	spin_unlock(&sched->job_list_lock);
 }
 
+/**
+ * drm_sched_tdr_queue_imm: - immediately start job timeout handler
+ *
+ * @sched: scheduler for which the timeout handling should be started.
+ *
+ * Start timeout handling immediately for the named scheduler.
+ */
+void drm_sched_tdr_queue_imm(struct drm_gpu_scheduler *sched)
+{
+	spin_lock(&sched->job_list_lock);
+	sched->timeout = 0;
+	drm_sched_start_timeout(sched);
+	spin_unlock(&sched->job_list_lock);
+}
+EXPORT_SYMBOL(drm_sched_tdr_queue_imm);
+
 /**
  * drm_sched_fault - immediately start timeout handler
  *
diff --git a/include/drm/gpu_scheduler.h b/include/drm/gpu_scheduler.h
index 625ffe040de3..998b32b8d212 100644
--- a/include/drm/gpu_scheduler.h
+++ b/include/drm/gpu_scheduler.h
@@ -568,6 +568,7 @@ void drm_sched_entity_modify_sched(struct drm_sched_entity *entity,
 				    struct drm_gpu_scheduler **sched_list,
                                    unsigned int num_sched_list);
 
+void drm_sched_tdr_queue_imm(struct drm_gpu_scheduler *sched);
 void drm_sched_job_cleanup(struct drm_sched_job *job);
 void drm_sched_wakeup_if_can_queue(struct drm_gpu_scheduler *sched);
 bool drm_sched_wqueue_ready(struct drm_gpu_scheduler *sched);
-- 
2.34.1


  parent reply	other threads:[~2023-10-11 23:58 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-11 23:58 [PATCH v5 0/7] DRM scheduler changes for Xe Matthew Brost
2023-10-11 23:58 ` [Intel-xe] " Matthew Brost
2023-10-11 23:58 ` [PATCH v5 1/7] drm/sched: Add drm_sched_wqueue_* helpers Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-14  1:24   ` Luben Tuikov
2023-10-14  1:24     ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` [PATCH v5 2/7] drm/sched: Convert drm scheduler to use a work queue rather than kthread Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-14  1:30   ` Luben Tuikov
2023-10-14  1:30     ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` [PATCH v5 3/7] drm/sched: Move schedule policy to scheduler Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-12  0:39   ` Luben Tuikov
2023-10-12  0:39     ` [Intel-xe] " Luben Tuikov
2023-10-12  4:31     ` Matthew Brost
2023-10-12  4:31       ` [Intel-xe] " Matthew Brost
2023-10-12  5:54       ` Luben Tuikov
2023-10-12  5:54         ` [Intel-xe] " Luben Tuikov
2023-10-19  1:19         ` Luben Tuikov
2023-10-19  1:19           ` [Intel-xe] " Luben Tuikov
2023-10-13 17:45   ` Luben Tuikov
2023-10-13 17:45     ` [Intel-xe] " Luben Tuikov
2023-10-16 15:08     ` Matthew Brost
2023-10-16 15:08       ` [Intel-xe] " Matthew Brost
2023-10-16 15:23       ` Luben Tuikov
2023-10-16 15:23         ` [Intel-xe] " Luben Tuikov
2023-10-14  1:40   ` Luben Tuikov
2023-10-14  1:40     ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` [PATCH v5 4/7] drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-14  2:06   ` Luben Tuikov
2023-10-14  2:06     ` [Intel-xe] " Luben Tuikov
2023-10-16 15:00     ` Matthew Brost
2023-10-16 15:00       ` [Intel-xe] " Matthew Brost
2023-10-16 15:10       ` Luben Tuikov
2023-10-16 15:10         ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` [PATCH v5 5/7] drm/sched: Split free_job into own work item Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-14  2:49   ` Luben Tuikov
2023-10-14  2:49     ` [Intel-xe] " Luben Tuikov
2023-10-15  0:09     ` Luben Tuikov
2023-10-15  0:09       ` [Intel-xe] " Luben Tuikov
2023-10-16 15:12       ` Matthew Brost
2023-10-16 15:12         ` [Intel-xe] " Matthew Brost
2023-10-16 15:29         ` Luben Tuikov
2023-10-16 15:29           ` [Intel-xe] " Luben Tuikov
2023-10-16 15:42           ` Luben Tuikov
2023-10-16 15:42             ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` [PATCH v5 6/7] drm/sched: Add drm_sched_start_timeout_unlocked helper Matthew Brost
2023-10-11 23:58   ` [Intel-xe] " Matthew Brost
2023-10-14  2:52   ` Luben Tuikov
2023-10-14  2:52     ` [Intel-xe] " Luben Tuikov
2023-10-16 14:57     ` Matthew Brost
2023-10-16 14:57       ` [Intel-xe] " Matthew Brost
2023-10-16 15:15       ` Luben Tuikov
2023-10-16 15:15         ` [Intel-xe] " Luben Tuikov
2023-10-11 23:58 ` Matthew Brost [this message]
2023-10-11 23:58   ` [Intel-xe] [PATCH v5 7/7] drm/sched: Add helper to queue TDR immediately for current and future jobs Matthew Brost
2023-10-14  3:04   ` Luben Tuikov
2023-10-14  3:04     ` [Intel-xe] " Luben Tuikov
2023-10-16 15:03     ` Matthew Brost
2023-10-16 15:03       ` [Intel-xe] " Matthew Brost
2023-10-12  2:02 ` [PATCH v5 0/7] DRM scheduler changes for Xe Danilo Krummrich
2023-10-12  2:02   ` [Intel-xe] " Danilo Krummrich
2023-10-12  4:49   ` Matthew Brost
2023-10-12  4:49     ` [Intel-xe] " Matthew Brost
2023-10-12  4:24 ` [Intel-xe] ✗ CI.Patch_applied: failure for DRM scheduler changes for Xe (rev7) Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231011235826.585624-8-matthew.brost@intel.com \
    --to=matthew.brost@intel.com \
    --cc=Liviu.Dudau@arm.com \
    --cc=boris.brezillon@collabora.com \
    --cc=christian.koenig@amd.com \
    --cc=dakr@redhat.com \
    --cc=donald.robson@imgtec.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=faith.ekstrand@collabora.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=ketil.johnsen@arm.com \
    --cc=lina@asahilina.net \
    --cc=luben.tuikov@amd.com \
    --cc=mcanal@igalia.com \
    --cc=robdclark@chromium.org \
    --cc=sarah.walker@imgtec.com \
    --cc=thomas.hellstrom@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.