<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 10/22/2024 12:28 AM, Cavitt,
      Jonathan wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CH0PR11MB5444BB63F191EACB8572EBDBE5432@CH0PR11MB5444.namprd11.prod.outlook.com">
      <pre wrap="" class="moz-quote-pre">-----Original Message-----
From: Intel-xe <a class="moz-txt-link-rfc2396E" href="mailto:intel-xe-bounces@lists.freedesktop.org"><intel-xe-bounces@lists.freedesktop.org></a> On Behalf Of Nirmoy Das
Sent: Monday, October 21, 2024 2:12 PM
To: <a class="moz-txt-link-abbreviated" href="mailto:intel-xe@lists.freedesktop.org">intel-xe@lists.freedesktop.org</a>
Cc: Das, Nirmoy <a class="moz-txt-link-rfc2396E" href="mailto:nirmoy.das@intel.com"><nirmoy.das@intel.com></a>; Ghimiray, Himal Prasad <a class="moz-txt-link-rfc2396E" href="mailto:himal.prasad.ghimiray@intel.com"><himal.prasad.ghimiray@intel.com></a>; Auld, Matthew <a class="moz-txt-link-rfc2396E" href="mailto:matthew.auld@intel.com"><matthew.auld@intel.com></a>; Brost, Matthew <a class="moz-txt-link-rfc2396E" href="mailto:matthew.brost@intel.com"><matthew.brost@intel.com></a>; Upadhyay, Tejas <a class="moz-txt-link-rfc2396E" href="mailto:tejas.upadhyay@intel.com"><tejas.upadhyay@intel.com></a>
Subject: [PATCH] drm/xe: Don't restart parallel queues multiple times on GT reset
</pre>
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">
In case of parallel submissions multiple GuC id will point to the
same exec queue and on GT reset such exec queues will get restarted
multiple times which is not desirable.

Link: <a class="moz-txt-link-freetext" href="https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2295">https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2295</a>
Cc: Himal Prasad Ghimiray <a class="moz-txt-link-rfc2396E" href="mailto:himal.prasad.ghimiray@intel.com"><himal.prasad.ghimiray@intel.com></a>
Cc: Matthew Auld <a class="moz-txt-link-rfc2396E" href="mailto:matthew.auld@intel.com"><matthew.auld@intel.com></a>
Cc: Matthew Brost <a class="moz-txt-link-rfc2396E" href="mailto:matthew.brost@intel.com"><matthew.brost@intel.com></a>
Cc: Tejas Upadhyay <a class="moz-txt-link-rfc2396E" href="mailto:tejas.upadhyay@intel.com"><tejas.upadhyay@intel.com></a>
Signed-off-by: Nirmoy Das <a class="moz-txt-link-rfc2396E" href="mailto:nirmoy.das@intel.com"><nirmoy.das@intel.com></a>
</pre>
      </blockquote>
      <pre wrap="" class="moz-quote-pre">
This makes sense, though I'd assume we'd want at least one of
the GuC IDs to restart the exec queue during a GT reset.  Is that
what exec_queue_enabled helps allow?</pre>
    </blockquote>
    <p>Yes <span style="white-space: pre-wrap">exec_queue_enabled() should be false for the 1st one but as Matt pointed out this is racy. So I will resend this with  </span></p>
    <p><span style="white-space: pre-wrap">Matt suggested check.</span></p>
    <p><span style="white-space: pre-wrap">
</span></p>
    <p><span style="white-space: pre-wrap">Regards,</span></p>
    <p><span style="white-space: pre-wrap">Nirmoy
</span></p>
    <blockquote type="cite" cite="mid:CH0PR11MB5444BB63F191EACB8572EBDBE5432@CH0PR11MB5444.namprd11.prod.outlook.com">
      <pre wrap="" class="moz-quote-pre">

I won't block on it presently, just was curious if that case was being
handled, or if we didn't need to worry about it.

Reviewed-by: Jonathan Cavitt <a class="moz-txt-link-rfc2396E" href="mailto:jonathan.cavitt@intel.com"><jonathan.cavitt@intel.com></a>
-Jonathan Cavitt

</pre>
      <blockquote type="cite">
        <pre wrap="" class="moz-quote-pre">---
 drivers/gpu/drm/xe/xe_guc_submit.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index 0b81972ff651..6aeb007eaf06 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -1784,8 +1784,13 @@ int xe_guc_submit_start(struct xe_guc *guc)
 
        mutex_lock(&guc->submission_state.lock);
        atomic_dec(&guc->submission_state.stopped);
-       xa_for_each(&guc->submission_state.exec_queue_lookup, index, q)
+       xa_for_each(&guc->submission_state.exec_queue_lookup, index, q) {
+               /* Skip restarting parallel queues */
+               if (exec_queue_enabled(q) && xe_exec_queue_is_parallel(q))
+                       continue;
+
                guc_exec_queue_start(q);
+       }
        mutex_unlock(&guc->submission_state.lock);
 
        wake_up_all(&guc->ct.wq);
-- 
2.46.0


</pre>
      </blockquote>
    </blockquote>
  </body>
</html>