# SPDX-License-Identifier: GPL-2.0

config XOR_BLOCKS
	tristate

# selected by architectures that provide an optimized XOR implementation
config XOR_BLOCKS_ARCH
	depends on XOR_BLOCKS
	default y if ALPHA
	default y if ARM
	default y if ARM64
	default y if CPU_HAS_LSX		# loongarch
	default y if ALTIVEC			# powerpc
	default y if RISCV_ISA_V
	default y if SPARC
	default y if S390
	default y if X86_32
	default y if X86_64
	bool

config XOR_KUNIT_TEST
	tristate "KUnit tests for xor_gen" if !KUNIT_ALL_TESTS
	depends on KUNIT
	depends on XOR_BLOCKS
	default KUNIT_ALL_TESTS
	help
	  Unit tests for the XOR library functions.

	  This is intended to help people writing architecture-specific
	  optimized versions.  If unsure, say N.

config RAID6_PQ
	tristate

# selected by architectures that provide an optimized PQ implementation
config RAID6_PQ_ARCH
	depends on RAID6_PQ
	default y if KERNEL_MODE_NEON		# arm32/arm64
	default y if LOONGARCH
	default y if ALTIVEC			# powerpc
	default y if RISCV_ISA_V
	default y if S390
	default y if X86
	bool

config RAID6_PQ_KUNIT_TEST
	tristate "KUnit tests for RAID6 PQ functions" if !KUNIT_ALL_TESTS
	depends on KUNIT
	depends on RAID6_PQ
	default KUNIT_ALL_TESTS
	help
	  Unit tests for the RAID6 PQ library functions.

	  This is intended to help people writing architecture-specific
	  optimized versions.  If unsure, say N.

config RAID6_PQ_BENCHMARK
	bool "Automatically choose fastest RAID6 PQ functions"
	depends on RAID6_PQ
	default y
	help
	  Benchmark all available RAID6 PQ functions on init and choose the
	  fastest one.

config RAID6_PQ_DEFAULT_ALG_BOOL
	bool "Default RAID6 PQ algorithm"
	default n
	depends on RAID6_PQ
	help
	  Allow for specifying a default algorithm via the kernel
	  parameter "raid6_pq_default_alg", which forces the performance
	  tests to be skipped. This can save between 500ms to 2s
	  during boot.

config RAID6_PQ_DEFAULT_ALG
	string "Default RAID6 PQ algorithm name"
	default ""
	depends on RAID6_PQ_DEFAULT_ALG_BOOL
	help
	  The default algorithm name to be used by default.
