]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/reset: Add "intel_display_reset_count" debugfs file
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 15 Apr 2026 21:04:10 +0000 (00:04 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 16 Apr 2026 17:22:01 +0000 (20:22 +0300)
Expose the number of display resets performed in a new
"display_reset_count" debugfs file. kms_busy can use this to
confirm that the kernel actually took the full display reset path.

v2: Give the file an "intel_" namespace (Jani)

Cc: Jouni Högander <jouni.hogander@intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Testcase: igt/kms_busy/*-with-reset
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260415210411.24750-7-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/intel_display_core.h
drivers/gpu/drm/i915/display/intel_display_debugfs.c
drivers/gpu/drm/i915/display/intel_display_reset.c
drivers/gpu/drm/i915/display/intel_display_reset.h
drivers/gpu/drm/xe/Makefile

index 38296a38372cdebb54731ffb0ceca0a17d83c9e5..c5a07090cba6a3e0d8027396b2402815a315c8c6 100644 (file)
@@ -559,6 +559,10 @@ struct intel_display {
                unsigned long mask;
        } quirks;
 
+       struct {
+               u32 count;
+       } reset;
+
        struct {
                /* restore state for suspend/resume and display reset */
                struct drm_atomic_state *modeset_state;
index f244a2b5d139444ace7783b9786fcf8d792e3161..81bef000a4e3e344ff97cbcd8e494482c43a0b5d 100644 (file)
@@ -27,6 +27,7 @@
 #include "intel_display_power.h"
 #include "intel_display_power_well.h"
 #include "intel_display_regs.h"
+#include "intel_display_reset.h"
 #include "intel_display_rpm.h"
 #include "intel_display_types.h"
 #include "intel_dmc.h"
@@ -838,6 +839,7 @@ void intel_display_debugfs_register(struct intel_display *display)
 
        intel_bios_debugfs_register(display);
        intel_cdclk_debugfs_register(display);
+       intel_display_reset_debugfs_register(display);
        intel_dmc_debugfs_register(display);
        intel_dp_test_debugfs_register(display);
        intel_fbc_debugfs_register(display);
index be4af74f0275f937f804bdcad9132d088c38fc91..fb3ac52a0acf18a59c397f352fdbcb4d30b4426b 100644 (file)
@@ -3,6 +3,8 @@
  * Copyright © 2023 Intel Corporation
  */
 
+#include <linux/debugfs.h>
+
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_print.h>
 
@@ -66,6 +68,7 @@ void intel_display_reset_prepare(struct intel_display *display)
                return;
        }
 
+       display->reset.count++;
        display->restore.modeset_state = state;
        state->acquire_ctx = ctx;
 }
@@ -114,3 +117,10 @@ unlock:
        drm_modeset_acquire_fini(ctx);
        mutex_unlock(&display->drm->mode_config.mutex);
 }
+
+void intel_display_reset_debugfs_register(struct intel_display *display)
+{
+       debugfs_create_u32("intel_display_reset_count", 0400,
+                          display->drm->debugfs_root,
+                          &display->reset.count);
+}
index a8aa7729d33f6ca63fbbf5d63c056663873b8a5c..b88c330a3441bbea1dcff10d2000287e56ea80c7 100644 (file)
@@ -15,4 +15,6 @@ bool intel_display_reset_test(struct intel_display *display);
 void intel_display_reset_prepare(struct intel_display *display);
 void intel_display_reset_finish(struct intel_display *display, bool test_only);
 
+void intel_display_reset_debugfs_register(struct intel_display *display);
+
 #endif /* __INTEL_RESET_H__ */
index 288d621e9ccbb61eae2414e823d734e82cd43c92..c249cb106d589b03362d947b83dc3d75497fd9de 100644 (file)
@@ -260,6 +260,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
        i915-display/intel_display_power.o \
        i915-display/intel_display_power_map.o \
        i915-display/intel_display_power_well.o \
+       i915-display/intel_display_reset.o \
        i915-display/intel_display_rpm.o \
        i915-display/intel_display_rps.o \
        i915-display/intel_display_trace.o \