config DRM_I915_WERROR
        bool "Force GCC to throw an error instead of a warning when compiling"
        # As this may inadvertently break the build, only allow the user
        # to shoot oneself in the foot iff they aim really hard
        depends on EXPERT
        # We use the dependency on !COMPILE_TEST to not be enabled in
        # allmodconfig or allyesconfig configurations
        depends on !COMPILE_TEST
        default n
        help
          Add -Werror to the build flags for (and only for) i915.ko.
          Do not enable this unless you are writing code for the i915.ko module.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_I915_DEBUG
        bool "Enable additional driver debugging"
        depends on DRM_I915
        select PREEMPT_COUNT
        select I2C_CHARDEV
        select DRM_DP_AUX_CHARDEV
        select X86_MSR # used by igt/pm_rpm
        select DRM_VGEM # used by igt/prime_vgem (dmabuf interop checks)
        select DRM_DEBUG_MM if DRM=y
	select DRM_DEBUG_SELFTEST
	select SW_SYNC # signaling validation framework (igt/syncobj*)
	select DRM_I915_SW_FENCE_DEBUG_OBJECTS
	select DRM_I915_SELFTEST
	select DRM_I915_TRACE_GEM
        default n
        help
          Choose this option to turn on extra driver debugging that may affect
          performance but will catch some internal issues.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_I915_DEBUG_GEM
        bool "Insert extra checks into the GEM internals"
        default n
        depends on DRM_I915_WERROR
        help
          Enable extra sanity checks (including BUGs) along the GEM driver
          paths that may slow the system down and if hit hang the machine.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_I915_TRACE_GEM
	bool "Insert extra ftrace output from the GEM internals"
	select TRACING
	default n
	help
	  Enable additional and verbose debugging output that will spam
	  ordinary tests, but may be vital for post-mortem debugging when
	  used with /proc/sys/kernel/ftrace_dump_on_oops

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_I915_SW_FENCE_DEBUG_OBJECTS
        bool "Enable additional driver debugging for fence objects"
        depends on DRM_I915
        select DEBUG_OBJECTS
        default n
        help
          Choose this option to turn on extra driver debugging that may affect
          performance but will catch some internal issues.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_I915_SW_FENCE_CHECK_DAG
        bool "Enable additional driver debugging for detecting dependency cycles"
        depends on DRM_I915
        default n
        help
          Choose this option to turn on extra driver debugging that may affect
          performance but will catch some internal issues.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_I915_SELFTEST
	bool "Enable selftests upon driver load"
	depends on DRM_I915
	default n
	select FAULT_INJECTION
	select PRIME_NUMBERS
	help
	  Choose this option to allow the driver to perform selftests upon
	  loading; also requires the i915.selftest=1 module parameter. To
	  exit the module after running the selftests (i.e. to prevent normal
	  module initialisation afterwards) use i915.selftest=-1.

	  Recommended for 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
        default n
        help
          Choose this option to turn on low level request tracing events.
          This provides the ability to precisely monitor engine utilisation
          and also analyze the request dependency resolving timeline.

          If in doubt, say "N".

config DRM_I915_DEBUG_VBLANK_EVADE
	bool "Enable extra debug warnings for vblank evasion"
	depends on DRM_I915
	default n
	help
	  Choose this option to turn on extra debug warnings for the
	  vblank evade mechanism. This gives a warning every time the
	  the deadline allotted for the vblank evade critical section
	  is exceeded, even if there isn't an actual risk of missing
	  the vblank.

	  If in doubt, say "N".
