We plan to expand upon the number of available statuses for when we
pretty-print the requests along the timelines, and so need a new set of
flags. We have settled upon:

        Unready [U]
          - initial status after being submitted, the request is not
            ready for execution as it is waiting for external fences

        Ready [R]
          - all fences the request was waiting on have been signaled,
            and the request is now ready for execution and will be
            in a backend queue

          - a ready request may still need to wait on semaphores
            [internal fences]

        Ready/virtual [V]
          - same as ready, but queued over multiple backends

        Executing [E]
          - the request has been transferred from the backend queue and
            submitted for execution on HW

          - a completed request may still be regarded as executing, its
            status may not be updated until it is retired and removed
            from the lists

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_lrc.c |  4 ++--
 drivers/gpu/drm/i915/i915_request.c | 30 +++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index b6ab1161942a..3a1b25c0e43e 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -6025,7 +6025,7 @@ void intel_execlists_show_requests(struct intel_engine_cs 
*engine,
 
                priolist_for_each_request(rq, p, i) {
                        if (count++ < max - 1)
-                               show_request(m, rq, "\t\tQ ");
+                               show_request(m, rq, "\t\tR ");
                        else
                                last = rq;
                }
@@ -6036,7 +6036,7 @@ void intel_execlists_show_requests(struct intel_engine_cs 
*engine,
                                   "\t\t...skipping %d queued requests...\n",
                                   count - max);
                }
-               show_request(m, last, "\t\tQ ");
+               show_request(m, last, "\t\tR ");
        }
 
        last = NULL;
diff --git a/drivers/gpu/drm/i915/i915_request.c 
b/drivers/gpu/drm/i915/i915_request.c
index 673991718ae6..d3610418e9ae 100644
--- a/drivers/gpu/drm/i915/i915_request.c
+++ b/drivers/gpu/drm/i915/i915_request.c
@@ -1875,6 +1875,36 @@ void i915_request_show(struct drm_printer *m,
        char buf[80] = "";
        int x = 0;
 
+       /*
+        * Often the prefix is used to show the queue status,
+        * in which case we use the following flags:
+        *
+        *  Unready [U]
+        *    - initial status upon being submitted by the user
+        *
+        *    - the request is not ready for execution as it is waiting
+        *      for external fences
+        *
+        *  Ready [R]
+        *    - all fences the request was waiting on have been signaled,
+        *      and the request is now ready for execution and will be
+        *      in a backend queue
+        *
+        *    - a ready request may still need to wait on semaphores
+        *      [internal fences]
+        *
+        *  Ready/virtual [V]
+        *    - same as ready, but queued over multiple backends
+        *
+        *  Executing [E]
+        *    - the request has been transferred from the backend queue and
+        *      submitted for execution on HW
+        *
+        *    - a completed request may still be regarded as executing, its
+        *      status may not be updated until it is retired and removed
+        *      from the lists
+        */
+
        x = print_sched_attr(&rq->sched.attr, buf, x, sizeof(buf));
 
        drm_printf(m, "%s %llx:%lld%s%s %s @ %dms: %s\n",
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to