drm/xe/reg_sr: Save errors for kunit integration
authorLucas De Marchi <lucas.demarchi@intel.com>
Sat, 1 Apr 2023 08:51:49 +0000 (01:51 -0700)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Tue, 19 Dec 2023 23:31:32 +0000 (18:31 -0500)
When there's an entry that is dropped when xe_reg_sr_add(), there's
not much we can do other than reporting the error - it's for certain a
driver issue or conflicting workarounds/tunings. Save the number of
errors to be used later by kunit to report where it happens.

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

index 37ae8412cb006e0a42eae1faafa3850407dd31e9..f97673be2e62eb47165b931e60b014fa65ca1c35 100644 (file)
@@ -82,6 +82,13 @@ static bool compatible_entries(const struct xe_reg_sr_entry *e1,
        return true;
 }
 
+static void reg_sr_inc_error(struct xe_reg_sr *sr)
+{
+#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
+       sr->errors++;
+#endif
+}
+
 int xe_reg_sr_add(struct xe_reg_sr *sr, u32 reg,
                  const struct xe_reg_sr_entry *e)
 {
@@ -119,6 +126,7 @@ fail:
        DRM_ERROR("Discarding save-restore reg %04lx (clear: %08x, set: %08x, masked: %s): ret=%d\n",
                  idx, e->clr_bits, e->set_bits,
                  str_yes_no(e->masked_reg), ret);
+       reg_sr_inc_error(sr);
 
        return ret;
 }
index 3d225789100517a873696adf42efbe72f6f29668..91469784fd907b336baedf31f03789640b66232b 100644 (file)
@@ -32,6 +32,10 @@ struct xe_reg_sr {
        } pool;
        struct xarray xa;
        const char *name;
+
+#if IS_ENABLED(CONFIG_DRM_XE_KUNIT_TEST)
+       unsigned int errors;
+#endif
 };
 
 #endif