From: Tvrtko Ursulin <[email protected]>

Instead of printing out the internal engine mask, which can change between
kernel versions making it difficult to map to actual engines, present a
bitmask of hanging engines ABI classes. For example:

  [drm] GPU HANG: ecode 9:8:24dffffd, in gem_exec_schedu [1334]

Engine ABI class is useful to quickly categorize render vs media etc hangs
in bug reports. Considering virtual engine even more so than the current
scheme.

v2:
 * Do not re-order fields. (Chris)

Signed-off-by: Tvrtko Ursulin <[email protected]>
---
 drivers/gpu/drm/i915/i915_gpu_error.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c 
b/drivers/gpu/drm/i915/i915_gpu_error.c
index 857db66cc4a3..d8cac4c5881f 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1659,17 +1659,16 @@ static u32 generate_ecode(const struct 
intel_engine_coredump *ee)
 static const char *error_msg(struct i915_gpu_coredump *error)
 {
        struct intel_engine_coredump *first = NULL;
+       unsigned int hung_classes = 0;
        struct intel_gt_coredump *gt;
-       intel_engine_mask_t engines;
        int len;
 
-       engines = 0;
        for (gt = error->gt; gt; gt = gt->next) {
                struct intel_engine_coredump *cs;
 
                for (cs = gt->engine; cs; cs = cs->next) {
                        if (cs->hung) {
-                               engines |= cs->engine->mask;
+                               hung_classes |= BIT(cs->engine->uabi_class);
                                if (!first)
                                        first = cs;
                        }
@@ -1678,7 +1677,7 @@ static const char *error_msg(struct i915_gpu_coredump 
*error)
 
        len = scnprintf(error->error_msg, sizeof(error->error_msg),
                        "GPU HANG: ecode %d:%x:%08x",
-                       INTEL_GEN(error->i915), engines,
+                       INTEL_GEN(error->i915), hung_classes,
                        generate_ecode(first));
        if (first && first->context.pid) {
                /* Just show the first executing process, more is confusing */
-- 
2.25.1

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to