config PSTORE
	tristate "Persistent store support"
	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.

choice
        prompt "Choose compression algorithm"
        depends on PSTORE
        default PSTORE_ZLIB_COMPRESS
        help
          This option chooses compression algorithm.

config PSTORE_ZLIB_COMPRESS
        bool "ZLIB"
        select ZLIB_DEFLATE
        select ZLIB_INFLATE
        help
          This option enables ZLIB compression algorithm support.

config PSTORE_LZO_COMPRESS
        bool "LZO"
        select LZO_COMPRESS
        select LZO_DECOMPRESS
        help
          This option enables LZO compression algorithm support.

config PSTORE_LZ4_COMPRESS
        bool "LZ4"
        select LZ4_COMPRESS
        select LZ4_DECOMPRESS
        help
          This option enables LZ4 compression algorithm support.
endchoice

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.
