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
next prev 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: linkBe 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.