From: Matthew Brost <matthew.brost@intel.com>
To: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Cc: <intel-xe@lists.freedesktop.org>
Subject: Re: [PATCH v3 12/18] drm/xe/multi_queue: Reset GT upon CGP_SYNC failure
Date: Fri, 21 Nov 2025 15:08:12 -0800 [thread overview]
Message-ID: <aSDw3EL7xcLd/MrI@lstrano-desk.jf.intel.com> (raw)
In-Reply-To: <20251121035147.766072-32-niranjana.vishwanathapura@intel.com>
On Thu, Nov 20, 2025 at 07:51:46PM -0800, Niranjana Vishwanathapura wrote:
> If GuC doesn't response to CGP_SYNC message, trigger
> GT reset and cleanup of all the queues of the multi
> queue group.
>
> Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
> ---
> drivers/gpu/drm/xe/xe_guc_submit.c | 38 ++++++++++++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
> index 87a33c06fe26..932be1e5001e 100644
> --- a/drivers/gpu/drm/xe/xe_guc_submit.c
> +++ b/drivers/gpu/drm/xe/xe_guc_submit.c
> @@ -593,6 +593,23 @@ static void xe_guc_exec_queue_trigger_cleanup(struct xe_exec_queue *q)
> xe_sched_tdr_queue_imm(&q->guc->sched);
> }
>
> +static void xe_guc_exec_queue_group_trigger_cleanup(struct xe_exec_queue *q)
> +{
> + struct xe_exec_queue *primary = xe_exec_queue_multi_queue_primary(q);
> + struct xe_exec_queue_group *group = q->multi_queue.group;
> + struct xe_exec_queue *eq;
> +
> + xe_gt_assert(guc_to_gt(exec_queue_to_guc(q)),
> + xe_exec_queue_is_multi_queue(q));
> +
> + xe_guc_exec_queue_trigger_cleanup(primary);
> +
> + mutex_lock(&group->list_lock);
> + list_for_each_entry(eq, &group->list, multi_queue.link)
> + xe_guc_exec_queue_trigger_cleanup(eq);
> + mutex_unlock(&group->list_lock);
> +}
> +
> static void xe_guc_exec_queue_reset_trigger_cleanup(struct xe_exec_queue *q)
> {
> if (xe_exec_queue_is_multi_queue(q)) {
> @@ -618,6 +635,23 @@ static void xe_guc_exec_queue_reset_trigger_cleanup(struct xe_exec_queue *q)
> }
> }
>
> +static void set_exec_queue_group_banned(struct xe_exec_queue *q)
> +{
> + struct xe_exec_queue *primary = xe_exec_queue_multi_queue_primary(q);
> + struct xe_exec_queue_group *group = q->multi_queue.group;
> + struct xe_exec_queue *eq;
> +
> + /* Ban all queues of the multi-queue group */
> + xe_gt_assert(guc_to_gt(exec_queue_to_guc(q)),
> + xe_exec_queue_is_multi_queue(q));
> + set_exec_queue_banned(primary);
> +
> + mutex_lock(&group->list_lock);
> + list_for_each_entry(eq, &group->list, multi_queue.link)
> + set_exec_queue_banned(eq);
> + mutex_unlock(&group->list_lock);
> +}
> +
> #define parallel_read(xe_, map_, field_) \
> xe_map_rd_field(xe_, &map_, 0, struct guc_submit_parallel_scratch, \
> field_)
> @@ -675,7 +709,11 @@ static void xe_guc_exec_queue_group_cgp_sync(struct xe_guc *guc,
> !READ_ONCE(group->sync_pending) ||
> xe_guc_read_stopped(guc), HZ);
> if ((!ret && !vf_recovery(guc)) || xe_guc_read_stopped(guc)) {
> + /* CGP_SYNC failed. Reset gt, cleanup the group */
> xe_gt_warn(guc_to_gt(guc), "Wait for CGP_SYNC_DONE response failed!\n");
> + set_exec_queue_group_banned(q);
> + xe_gt_reset_async(q->gt);
> + xe_guc_exec_queue_group_trigger_cleanup(q);
> return;
> }
>
> --
> 2.43.0
>
next prev parent reply other threads:[~2025-11-21 23:08 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-21 3:51 [PATCH v3 00/18] drm/xe: Multi Queue feature support Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 01/18] drm/xe/multi_queue: Add multi_queue_enable_mask to gt information Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 02/18] drm/xe/multi_queue: Add user interface for multi queue support Niranjana Vishwanathapura
2025-11-21 22:51 ` Matthew Brost
2025-11-22 4:35 ` Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 03/18] drm/xe/multi_queue: Add GuC " Niranjana Vishwanathapura
2025-11-22 22:16 ` Matthew Brost
2025-12-03 3:40 ` Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 04/18] drm/xe/multi_queue: Add multi queue priority property Niranjana Vishwanathapura
2025-11-21 22:57 ` Matthew Brost
2025-11-21 3:51 ` [PATCH v3 05/18] drm/xe/multi_queue: Handle invalid exec queue property setting Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 06/18] drm/xe/multi_queue: Add exec_queue set_property ioctl support Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 07/18] drm/xe/multi_queue: Add support for multi queue dynamic priority change Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 08/18] drm/xe/multi_queue: Add multi queue information to guc_info dump Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 09/18] drm/xe/multi_queue: Handle tearing down of a multi queue Niranjana Vishwanathapura
2025-11-21 23:03 ` Matthew Brost
2025-11-22 4:40 ` Niranjana Vishwanathapura
2025-11-22 5:47 ` Matthew Brost
2025-12-09 3:31 ` Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 10/18] drm/xe/multi_queue: Set QUEUE_DRAIN_MODE for Multi Queue batches Niranjana Vishwanathapura
2025-11-24 18:49 ` Matt Roper
2025-12-02 21:28 ` Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 11/18] drm/xe/multi_queue: Handle CGP context error Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 12/18] drm/xe/multi_queue: Reset GT upon CGP_SYNC failure Niranjana Vishwanathapura
2025-11-21 23:08 ` Matthew Brost [this message]
2025-11-21 3:51 ` [PATCH v3 13/18] drm/xe/multi_queue: Tracepoint support Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 14/18] drm/xe/multi_queue: Support active group after primary is destroyed Niranjana Vishwanathapura
2025-11-22 5:57 ` Matthew Brost
2025-11-22 6:08 ` Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 15/18] drm/xe/xe3p: Disable GuC Dynamic ICS for Xe3p Niranjana Vishwanathapura
2025-11-21 3:51 ` [PATCH v3 16/18] drm/xe/doc: Add documentation for Multi Queue Group Niranjana Vishwanathapura
2025-11-22 6:02 ` Matthew Brost
2025-11-21 3:51 ` [PATCH v3 17/18] drm/xe/doc: Add documentation for Multi Queue Group GuC interface Niranjana Vishwanathapura
2025-11-22 6:10 ` Matthew Brost
2025-11-21 3:51 ` [PATCH v3 18/18] drm/xe/multi_queue: Enable multi_queue on xe3p_xpc Niranjana Vishwanathapura
2025-11-21 4:01 ` ✗ CI.checkpatch: warning for drm/xe: Multi Queue feature support (rev3) Patchwork
2025-11-21 4:02 ` ✓ CI.KUnit: success " Patchwork
2025-11-21 4:51 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-11-21 8:10 ` ✗ Xe.CI.Full: " Patchwork
2025-11-24 14:04 ` Patchwork
2025-11-27 9:38 ` [PATCH v3 00/18] drm/xe: Multi Queue feature support Hoppe, Mateusz
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=aSDw3EL7xcLd/MrI@lstrano-desk.jf.intel.com \
--to=matthew.brost@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=niranjana.vishwanathapura@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox