# SPDX-License-Identifier: GPL-2.0-only
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.

config PSTORE_DEFAULT_KMSG_BYTES
	int "Default kernel log storage space" if EXPERT
	depends on PSTORE
	default "10240"
	help
	  Defines default size of pstore kernel log storage.
	  Can be enlarged if needed, not recommended to shrink it.

config PSTORE_COMPRESS
	bool "Pstore compression (deflate)"
	depends on PSTORE
	select ZLIB_INFLATE
	select ZLIB_DEFLATE
	default y
	help
	  Whether pstore records should be compressed before being written to
	  the backing store. This is implemented using the zlib 'deflate'
	  algorithm, using the library implementation instead of using the full
	  blown crypto API. This reduces the risk of secondary oopses or other
	  problems while pstore is recording panic metadata.

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
	select RT_MUTEXES
	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
	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.

config PSTORE_ZONE
	tristate
	depends on PSTORE
	help
	  The common layer for pstore/blk (and pstore/ram in the future)
	  to manage storage in zones.

config PSTORE_BLK
	tristate "Log panic/oops to a block device"
	depends on PSTORE
	depends on BLOCK
	select PSTORE_ZONE
	default n
	help
	  This enables panic and oops message to be logged to a block dev
	  where it can be read back at some later point.

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

	  If unsure, say N.

config PSTORE_BLK_BLKDEV
	string "block device identifier"
	depends on PSTORE_BLK
	default ""
	help
	  Which block device should be used for pstore/blk.

	  It accepts the following variants:
	  1) <hex_major><hex_minor> device number in hexadecimal representation,
	     with no leading 0x, for example b302.
	  2) /dev/<disk_name> represents the device name of disk
	  3) /dev/<disk_name><decimal> represents the device name and number
	     of partition - device number of disk plus the partition number
	  4) /dev/<disk_name>p<decimal> - same as the above, this form is
	     used when disk name of partitioned disk ends with a digit.
	  5) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing the
	     unique id of a partition if the partition table provides it.
	     The UUID may be either an EFI/GPT UUID, or refer to an MSDOS
	     partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-
	     filled hex representation of the 32-bit "NT disk signature", and PP
	     is a zero-filled hex representation of the 1-based partition number.
	  6) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in relation
	     to a partition with a known unique id.
	  7) <major>:<minor> major and minor number of the device separated by
	     a colon.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.

config PSTORE_BLK_KMSG_SIZE
	int "Size in Kbytes of kmsg dump log to store"
	depends on PSTORE_BLK
	default 64
	help
	  This just sets size of kmsg dump (oops, panic, etc) log for
	  pstore/blk. The size is in KB and must be a multiple of 4.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.

config PSTORE_BLK_MAX_REASON
	int "Maximum kmsg dump reason to store"
	depends on PSTORE_BLK
	default 2
	help
	  The maximum reason for kmsg dumps to store. The default is
	  2 (KMSG_DUMP_OOPS), see include/linux/kmsg_dump.h's
	  enum kmsg_dump_reason for more details.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.

config PSTORE_BLK_PMSG_SIZE
	int "Size in Kbytes of pmsg to store"
	depends on PSTORE_BLK
	depends on PSTORE_PMSG
	default 64
	help
	  This just sets size of pmsg (pmsg_size) for pstore/blk. The size is
	  in KB and must be a multiple of 4.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.

config PSTORE_BLK_CONSOLE_SIZE
	int "Size in Kbytes of console log to store"
	depends on PSTORE_BLK
	depends on PSTORE_CONSOLE
	default 64
	help
	  This just sets size of console log (console_size) to store via
	  pstore/blk. The size is in KB and must be a multiple of 4.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.

config PSTORE_BLK_FTRACE_SIZE
	int "Size in Kbytes of ftrace log to store"
	depends on PSTORE_BLK
	depends on PSTORE_FTRACE
	default 64
	help
	  This just sets size of ftrace log (ftrace_size) for pstore/blk. The
	  size is in KB and must be a multiple of 4.

	  NOTE that, both Kconfig and module parameters can configure
	  pstore/blk, but module parameters have priority over Kconfig.