drm/i915/selftests: Hide dangerous tests
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 25 Oct 2017 15:32:07 +0000 (16:32 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 6 Nov 2017 11:17:03 +0000 (11:17 +0000)
Some tests are designed to exercise the limits of the HW and may trigger
unintended side-effects making the machine unusable. This should not be
executed by default, but are still useful for early platform validation.

References: https://bugs.freedesktop.org/show_bug.cgi?id=103453
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20171025153207.9589-1-chris@chris-wilson.co.uk
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
drivers/gpu/drm/i915/Kconfig.debug
drivers/gpu/drm/i915/selftests/intel_uncore.c

index aed7d20..19c77c6 100644 (file)
@@ -90,6 +90,20 @@ config DRM_I915_SELFTEST
 
          If in doubt, say "N".
 
+config DRM_I915_SELFTEST_BROKEN
+       bool "Enable broken and dangerous selftests"
+       depends on DRM_I915_SELFTEST
+       depends on BROKEN
+       default n
+       help
+         This option enables the execution of selftests that are "dangerous"
+         and may trigger unintended HW side-effects as they break strict
+         rules given in the HW specification. For science.
+
+         Recommended for masochistic driver developers only.
+
+         If in doubt, say "N".
+
 config DRM_I915_LOW_LEVEL_TRACEPOINTS
         bool "Enable low level request tracing events"
         depends on DRM_I915
index 3cac22e..f52a4ab 100644 (file)
@@ -120,10 +120,10 @@ static int intel_uncore_check_forcewake_domains(struct drm_i915_private *dev_pri
            !IS_CHERRYVIEW(dev_priv))
                return 0;
 
-       if (IS_VALLEYVIEW(dev_priv)) /* XXX system lockup! */
-               return 0;
-
-       if (IS_BROADWELL(dev_priv)) /* XXX random GPU hang afterwards! */
+       /*
+        * This test may lockup the machine or cause GPU hangs afterwards.
+        */
+       if (!IS_ENABLED(CONFIG_DRM_I915_SELFTEST_BROKEN))
                return 0;
 
        valid = kzalloc(BITS_TO_LONGS(FW_RANGE) * sizeof(*valid),