mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-28 11:18:45 +07:00
17639f67c1
pstore/blk is similar to pstore/ram, but uses a block device as the storage rather than persistent ram. The pstore/blk backend solves two common use-cases that used to preclude using pstore/ram: - not all devices have a battery that could be used to persist regular RAM across power failures. - most embedded intelligent equipment have no persistent ram, which increases costs, instead preferring cheaper solutions, like block devices. pstore/blk provides separate configurations for the end user and for the block drivers. User configuration determines how pstore/blk operates, such as record sizes, max kmsg dump reasons, etc. These can be set by Kconfig and/or module parameters, but module parameter have priority over Kconfig. Driver configuration covers all the details about the target block device, such as total size of the device and how to perform read/write operations. These are provided by block drivers, calling pstore_register_blkdev(), including an optional panic_write callback used to bypass regular IO APIs in an effort to avoid potentially destabilized kernel code during a panic. Signed-off-by: WeiXiong Liao <liaoweixiong@allwinnertech.com> Link: https://lore.kernel.org/lkml/20200511233229.27745-3-keescook@chromium.org/ Co-developed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Kees Cook <keescook@chromium.org>
227 lines
6.8 KiB
Plaintext
227 lines
6.8 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
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
|
|
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.
|
|
|
|
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 accept 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 number of disk
|
|
3) /dev/<disk_name><decimal> represents the device 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.
|