Could be helpful for debugging purposes.

Signed-off-by: Lionel Landwerlin <lionel.g.landwer...@intel.com>
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c    | 6 ++++++
 drivers/gpu/drm/i915/gt/intel_engine_types.h | 1 +
 drivers/gpu/drm/i915/i915_gpu_error.c        | 8 ++++++++
 drivers/gpu/drm/i915/i915_reg.h              | 2 ++
 4 files changed, 17 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index f451ef376548..a3089872cda9 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -981,6 +981,12 @@ void intel_engine_get_instdone(const struct 
intel_engine_cs *engine,
 
                instdone->slice_common =
                        intel_uncore_read(uncore, GEN7_SC_INSTDONE);
+               if (INTEL_GEN(i915) >= 12) {
+                       instdone->slice_common_extra[0] =
+                               intel_uncore_read(uncore, 
GEN12_SC_INSTDONE_EXTRA);
+                       instdone->slice_common_extra[1] =
+                               intel_uncore_read(uncore, 
GEN12_SC_INSTDONE_EXTRA2);
+               }
                for_each_instdone_slice_subslice(i915, sseu, slice, subslice) {
                        instdone->sampler[slice][subslice] =
                                read_subslice_reg(engine, slice, subslice,
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h 
b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 00287515e7af..3b7e00ba72a0 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -75,6 +75,7 @@ struct intel_instdone {
        u32 instdone;
        /* The following exist only in the RCS engine */
        u32 slice_common;
+       u32 slice_common_extra[2];
        u32 sampler[I915_MAX_SLICES][I915_MAX_SUBSLICES];
        u32 row[I915_MAX_SLICES][I915_MAX_SUBSLICES];
 };
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c 
b/drivers/gpu/drm/i915/i915_gpu_error.c
index 4c1836f0a991..2c631799f5e6 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -450,6 +450,14 @@ static void error_print_instdone(struct 
drm_i915_error_state_buf *m,
                err_printf(m, "  ROW_INSTDONE[%d][%d]: 0x%08x\n",
                           slice, subslice,
                           ee->instdone.row[slice][subslice]);
+
+       if (INTEL_GEN(m->i915) < 12)
+               return;
+
+       err_printf(m, "  SC_INSTDONE_EXTRA: 0x%08x\n",
+                  ee->instdone.slice_common_extra[0]);
+       err_printf(m, "  SC_INSTDONE_EXTRA2: 0x%08x\n",
+                  ee->instdone.slice_common_extra[1]);
 }
 
 static void error_print_request(struct drm_i915_error_state_buf *m,
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 6cc55c103f67..5fc251ba8915 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2626,6 +2626,8 @@ static inline bool i915_mmio_reg_valid(i915_reg_t reg)
 #define IPEIR_I965     _MMIO(0x2064)
 #define IPEHR_I965     _MMIO(0x2068)
 #define GEN7_SC_INSTDONE       _MMIO(0x7100)
+#define GEN12_SC_INSTDONE_EXTRA                _MMIO(0x7104)
+#define GEN12_SC_INSTDONE_EXTRA2       _MMIO(0x7108)
 #define GEN7_SAMPLER_INSTDONE  _MMIO(0xe160)
 #define GEN7_ROW_INSTDONE      _MMIO(0xe164)
 #define GEN8_MCR_SELECTOR              _MMIO(0xfdc)
-- 
2.25.0

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

Reply via email to