# SPDX-License-Identifier: GPL-2.0-only
config DRM_XE_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) xe.ko.
	  Do not enable this unless you are writing code for the xe.ko module.

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_DEBUG
	bool "Enable additional driver debugging"
	depends on DRM_XE
	depends on EXPERT
	depends on !COMPILE_TEST
	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_XE_DEBUG_VM
	bool "Enable extra VM debugging info"
	default n
	help
	  Enable extra VM debugging info

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_DEBUG_MEMIRQ
	bool "Enable extra memirq debugging"
	default n
	help
	  Choose this option to enable additional debugging info for
	  memory based interrupts.

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_DEBUG_SRIOV
	bool "Enable extra SR-IOV debugging"
	default n
	select DRM_XE_DEBUG_MEMIRQ
	help
	  Enable extra SR-IOV debugging info.

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_DEBUG_MEM
	bool "Enable passing SYS/VRAM addresses to user space"
	default n
	help
	  Pass object location trough uapi. Intended for extended
	  testing and development only.

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_KUNIT_TEST
        tristate "KUnit tests for the drm xe driver" if !KUNIT_ALL_TESTS
	depends on DRM_XE && KUNIT && DEBUG_FS
	default KUNIT_ALL_TESTS
	select DRM_EXPORT_FOR_TESTS if m
	help
	  Choose this option to allow the driver to perform selftests under
	  the kunit framework

	  Recommended for driver developers only.

	  If in doubt, say "N".

config DRM_XE_LARGE_GUC_BUFFER
        bool "Enable larger guc log buffer"
        default n
        help
          Choose this option when debugging guc issues.
          Buffer should be large enough for complex issues.

          Recommended for driver developers only.

          If in doubt, say "N".

config DRM_XE_USERPTR_INVAL_INJECT
       bool "Inject userptr invalidation -EINVAL errors"
       default n
       help
         Choose this option when debugging error paths that
	 are hit during checks for userptr invalidations.

	 Recomended for driver developers only.
	 If in doubt, say "N".
