config PSTORE
	tristate "Persistent store support"
	select CRYPTO if PSTORE_COMPRESS
	default n
	help
	   This option enables generic access to platform level
	   persistent storage via "pstore" filesystem that can
	   be mounted as /dev/pstore.  Only useful if you have
	   a platform level driver that registers with pstore to
	   provide the data, so you probably should just go say "Y"
	   (or "M") to a platform specific persistent store driver
	   (e.g. ACPI_APEI on X86) which will select this for you.
	   If you don't have a platform persistent store driver,
	   say N.

config PSTORE_DEFLATE_COMPRESS
	tristate "DEFLATE (ZLIB) compression"
	default y
	depends on PSTORE
	select CRYPTO_DEFLATE
	help
	  This option enables DEFLATE (also known as ZLIB) compression
	  algorithm support.

config PSTORE_LZO_COMPRESS
	tristate "LZO compression"
	depends on PSTORE
	select CRYPTO_LZO
	help
	  This option enables LZO compression algorithm support.

config PSTORE_LZ4_COMPRESS
	tristate "LZ4 compression"
	depends on PSTORE
	select CRYPTO_LZ4
	help
	  This option enables LZ4 compression algorithm support.

config PSTORE_LZ4HC_COMPRESS
	tristate "LZ4HC compression"
	depends on PSTORE
	select CRYPTO_LZ4HC
	help
	  This option enables LZ4HC (high compression) mode algorithm.

config PSTORE_842_COMPRESS
	bool "842 compression"
	depends on PSTORE
	select CRYPTO_842
	help
	  This option enables 842 compression algorithm support.

config PSTORE_ZSTD_COMPRESS
	bool "zstd compression"
	depends on PSTORE
	select CRYPTO_ZSTD
	help
	  This option enables zstd compression algorithm support.

config PSTORE_COMPRESS
	def_bool y
	depends on PSTORE
	depends on PSTORE_DEFLATE_COMPRESS || PSTORE_LZO_COMPRESS ||	\
		   PSTORE_LZ4_COMPRESS || PSTORE_LZ4HC_COMPRESS ||	\
		   PSTORE_842_COMPRESS || PSTORE_ZSTD_COMPRESS

choice
	prompt "Default pstore compression algorithm"
	depends on PSTORE_COMPRESS
	help
	  This option chooses the default active compression algorithm.
	  This change be changed at boot with "pstore.compress=..." on
	  the kernel command line.

	  Currently, pstore has support for 6 compression algorithms:
	  deflate, lzo, lz4, lz4hc, 842 and zstd.

	  The default compression algorithm is deflate.

	config PSTORE_DEFLATE_COMPRESS_DEFAULT
		bool "deflate" if PSTORE_DEFLATE_COMPRESS

	config PSTORE_LZO_COMPRESS_DEFAULT
		bool "lzo" if PSTORE_LZO_COMPRESS

	config PSTORE_LZ4_COMPRESS_DEFAULT
		bool "lz4" if PSTORE_LZ4_COMPRESS

	config PSTORE_LZ4HC_COMPRESS_DEFAULT
		bool "lz4hc" if PSTORE_LZ4HC_COMPRESS

	config PSTORE_842_COMPRESS_DEFAULT
		bool "842" if PSTORE_842_COMPRESS

	config PSTORE_ZSTD_COMPRESS_DEFAULT
		bool "zstd" if PSTORE_ZSTD_COMPRESS

endchoice

config PSTORE_COMPRESS_DEFAULT
	string
	depends on PSTORE_COMPRESS
	default "deflate" if PSTORE_DEFLATE_COMPRESS_DEFAULT
	default "lzo" if PSTORE_LZO_COMPRESS_DEFAULT
	default "lz4" if PSTORE_LZ4_COMPRESS_DEFAULT
	default "lz4hc" if PSTORE_LZ4HC_COMPRESS_DEFAULT
	default "842" if PSTORE_842_COMPRESS_DEFAULT
	default "zstd" if PSTORE_ZSTD_COMPRESS_DEFAULT

config PSTORE_CONSOLE
	bool "Log kernel console messages"
	depends on PSTORE
	help
	  When the option is enabled, pstore will log all kernel
	  messages, even if no oops or panic happened.

config PSTORE_PMSG
	bool "Log user space messages"
	depends on PSTORE
	help
	  When the option is enabled, pstore will export a character
	  interface /dev/pmsg0 to log user space messages. On reboot
	  data can be retrieved from /sys/fs/pstore/pmsg-ramoops-[ID].

	  If unsure, say N.

config PSTORE_FTRACE
	bool "Persistent function tracer"
	depends on PSTORE
	depends on FUNCTION_TRACER
	depends on DEBUG_FS
	help
	  With this option kernel traces function calls into a persistent
	  ram buffer that can be decoded and dumped after reboot through
	  pstore filesystem. It can be used to determine what function
	  was last called before a reset or panic.

	  If unsure, say N.

config PSTORE_RAM
	tristate "Log panic/oops to a RAM buffer"
	depends on PSTORE
	depends on HAS_IOMEM
	depends on HAVE_MEMBLOCK
	select REED_SOLOMON
	select REED_SOLOMON_ENC8
	select REED_SOLOMON_DEC8
	help
	  This enables panic and oops messages to be logged to a circular
	  buffer in RAM where it can be read back at some later point.

	  Note that for historical reasons, the module will be named
	  "ramoops.ko".

	  For more information, see Documentation/admin-guide/ramoops.rst.
