]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915: Lift i915_request_show()
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 19 Nov 2020 16:56:12 +0000 (16:56 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 19 Nov 2020 20:31:04 +0000 (20:31 +0000)
Extract i915_request_show for reuse in other request chain pretty
printers.

For a bonus point, quietly change the seqno format from %llx to %lld to
match everywhere else.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20201119165616.10834-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_engine_cs.c
drivers/gpu/drm/i915/gt/intel_lrc.c
drivers/gpu/drm/i915/gt/intel_lrc.h
drivers/gpu/drm/i915/i915_request.c
drivers/gpu/drm/i915/i915_request.h

index 1ed84ee8ce41198e9fc6a057d65a7cea86e4d58b..c3bb2e9546e67eb72d1adea4bd7af668faae812d 100644 (file)
@@ -1294,45 +1294,6 @@ bool intel_engine_can_store_dword(struct intel_engine_cs *engine)
        }
 }
 
-static int print_sched_attr(const struct i915_sched_attr *attr,
-                           char *buf, int x, int len)
-{
-       if (attr->priority == I915_PRIORITY_INVALID)
-               return x;
-
-       x += snprintf(buf + x, len - x,
-                     " prio=%d", attr->priority);
-
-       return x;
-}
-
-static void print_request(struct drm_printer *m,
-                         struct i915_request *rq,
-                         const char *prefix)
-{
-       const char *name = rq->fence.ops->get_timeline_name(&rq->fence);
-       char buf[80] = "";
-       int x = 0;
-
-       x = print_sched_attr(&rq->sched.attr, buf, x, sizeof(buf));
-
-       drm_printf(m, "%s %llx:%llx%s%s %s @ %dms: %s\n",
-                  prefix,
-                  rq->fence.context, rq->fence.seqno,
-                  i915_request_completed(rq) ? "!" :
-                  i915_request_started(rq) ? "*" :
-                  !i915_sw_fence_signaled(&rq->semaphore) ? "&" :
-                  "",
-                  test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
-                           &rq->fence.flags) ? "+" :
-                  test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
-                           &rq->fence.flags) ? "-" :
-                  "",
-                  buf,
-                  jiffies_to_msecs(jiffies - rq->emitted_jiffies),
-                  name);
-}
-
 static struct intel_timeline *get_timeline(struct i915_request *rq)
 {
        struct intel_timeline *tl;
@@ -1530,7 +1491,7 @@ static void intel_engine_print_registers(struct intel_engine_cs *engine,
                                        intel_context_is_banned(rq->context) ? "*" : "");
                        len += print_ring(hdr + len, sizeof(hdr) - len, rq);
                        scnprintf(hdr + len, sizeof(hdr) - len, "rq: ");
-                       print_request(m, rq, hdr);
+                       i915_request_show(m, rq, hdr);
                }
                for (port = execlists->pending; (rq = *port); port++) {
                        char hdr[160];
@@ -1544,7 +1505,7 @@ static void intel_engine_print_registers(struct intel_engine_cs *engine,
                                        intel_context_is_banned(rq->context) ? "*" : "");
                        len += print_ring(hdr + len, sizeof(hdr) - len, rq);
                        scnprintf(hdr + len, sizeof(hdr) - len, "rq: ");
-                       print_request(m, rq, hdr);
+                       i915_request_show(m, rq, hdr);
                }
                rcu_read_unlock();
                execlists_active_unlock_bh(execlists);
@@ -1688,7 +1649,7 @@ void intel_engine_dump(struct intel_engine_cs *engine,
        if (rq) {
                struct intel_timeline *tl = get_timeline(rq);
 
-               print_request(m, rq, "\t\tactive ");
+               i915_request_show(m, rq, "\t\tactive ");
 
                drm_printf(m, "\t\tring->start:  0x%08x\n",
                           i915_ggtt_offset(rq->ring->vma));
@@ -1726,7 +1687,7 @@ void intel_engine_dump(struct intel_engine_cs *engine,
                drm_printf(m, "\tDevice is asleep; skipping register dump\n");
        }
 
-       intel_execlists_show_requests(engine, m, print_request, 8);
+       intel_execlists_show_requests(engine, m, i915_request_show, 8);
 
        drm_printf(m, "HWSP:\n");
        hexdump(m, engine->status_page.addr, PAGE_SIZE);
index f7eca93f04bc7ba7ccb027c6d52d0e4c29e56e1b..b6ab1161942a86346166239ab28e3138d7ff1d80 100644 (file)
@@ -5981,7 +5981,7 @@ int intel_virtual_engine_attach_bond(struct intel_engine_cs *engine,
 void intel_execlists_show_requests(struct intel_engine_cs *engine,
                                   struct drm_printer *m,
                                   void (*show_request)(struct drm_printer *m,
-                                                       struct i915_request *rq,
+                                                       const struct i915_request *rq,
                                                        const char *prefix),
                                   unsigned int max)
 {
index c2d287f25497a3b6a782a508b386d01e6af00420..32e6e204f54487746bb1b44f6d78067e0592a242 100644 (file)
@@ -106,7 +106,7 @@ void intel_lr_context_reset(struct intel_engine_cs *engine,
 void intel_execlists_show_requests(struct intel_engine_cs *engine,
                                   struct drm_printer *m,
                                   void (*show_request)(struct drm_printer *m,
-                                                       struct i915_request *rq,
+                                                       const struct i915_request *rq,
                                                        const char *prefix),
                                   unsigned int max);
 
index 0e813819b041b5ed7f15648333676c521e7049a9..673991718ae6427d50c203cb1e6af633bc779273 100644 (file)
@@ -1855,6 +1855,45 @@ out:
        return timeout;
 }
 
+static int print_sched_attr(const struct i915_sched_attr *attr,
+                           char *buf, int x, int len)
+{
+       if (attr->priority == I915_PRIORITY_INVALID)
+               return x;
+
+       x += snprintf(buf + x, len - x,
+                     " prio=%d", attr->priority);
+
+       return x;
+}
+
+void i915_request_show(struct drm_printer *m,
+                      const struct i915_request *rq,
+                      const char *prefix)
+{
+       const char *name = rq->fence.ops->get_timeline_name((struct dma_fence *)&rq->fence);
+       char buf[80] = "";
+       int x = 0;
+
+       x = print_sched_attr(&rq->sched.attr, buf, x, sizeof(buf));
+
+       drm_printf(m, "%s %llx:%lld%s%s %s @ %dms: %s\n",
+                  prefix,
+                  rq->fence.context, rq->fence.seqno,
+                  i915_request_completed(rq) ? "!" :
+                  i915_request_started(rq) ? "*" :
+                  !i915_sw_fence_signaled(&rq->semaphore) ? "&" :
+                  "",
+                  test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
+                           &rq->fence.flags) ? "+" :
+                  test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
+                           &rq->fence.flags) ? "-" :
+                  "",
+                  buf,
+                  jiffies_to_msecs(jiffies - rq->emitted_jiffies),
+                  name);
+}
+
 #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
 #include "selftests/mock_request.c"
 #include "selftests/i915_request.c"
index 16b721080195f0aa1fb2f4e52c0ea8957d077655..09609071b72591230f2deeeca8c4b520f9202931 100644 (file)
@@ -43,6 +43,7 @@
 
 struct drm_file;
 struct drm_i915_gem_object;
+struct drm_printer;
 struct i915_request;
 
 struct i915_capture_list {
@@ -369,6 +370,10 @@ long i915_request_wait(struct i915_request *rq,
 #define I915_WAIT_PRIORITY     BIT(1) /* small priority bump for the request */
 #define I915_WAIT_ALL          BIT(2) /* used by i915_gem_object_wait() */
 
+void i915_request_show(struct drm_printer *m,
+                      const struct i915_request *rq,
+                      const char *prefix);
+
 static inline bool i915_request_signaled(const struct i915_request *rq)
 {
        /* The request may live longer than its HWSP, so check flags first! */