drm/xe/gt: Dump PAT table when failing to initialize
authorLucas De Marchi <lucas.demarchi@intel.com>
Fri, 6 Oct 2023 18:23:25 +0000 (11:23 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:42:57 +0000 (11:42 -0500)
When failing on early initialization, one cause may be that the PAT
configuration is not correct. Dump it for ease of debugging.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://lore.kernel.org/r/20231006182325.3617685-4-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_gt.c

index 68cd9a7..c63e2e4 100644 (file)
@@ -307,6 +307,17 @@ int xe_gt_init_early(struct xe_gt *gt)
        return 0;
 }
 
+static void dump_pat_on_error(struct xe_gt *gt)
+{
+       struct drm_printer p;
+       char prefix[32];
+
+       snprintf(prefix, sizeof(prefix), "[GT%u Error]", gt->info.id);
+       p = drm_debug_printer(prefix);
+
+       xe_pat_dump(gt, &p);
+}
+
 static int gt_fw_domain_init(struct xe_gt *gt)
 {
        int err, i;
@@ -360,6 +371,7 @@ static int gt_fw_domain_init(struct xe_gt *gt)
        return 0;
 
 err_force_wake:
+       dump_pat_on_error(gt);
        xe_force_wake_put(gt_to_fw(gt), XE_FW_GT);
 err_hw_fence_irq:
        for (i = 0; i < XE_ENGINE_CLASS_MAX; ++i)