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_MM_SELFTEST
	select DRM_I915_SW_FENCE_DEBUG_OBJECTS
	select DRM_I915_SELFTEST
        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_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_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".
