2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2010-12-29 06:25:21 +08:00
|
|
|
config PSTORE
|
2015-10-20 15:39:03 +08:00
|
|
|
tristate "Persistent store support"
|
2018-03-15 23:34:08 +08:00
|
|
|
select CRYPTO if PSTORE_COMPRESS
|
2010-12-29 06:25:21 +08:00
|
|
|
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.
|
2012-05-16 20:43:08 +08:00
|
|
|
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
config PSTORE_DEFLATE_COMPRESS
|
2018-03-15 23:34:08 +08:00
|
|
|
tristate "DEFLATE (ZLIB) compression"
|
2018-03-07 07:57:38 +08:00
|
|
|
default y
|
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
select CRYPTO_DEFLATE
|
2018-03-07 07:57:38 +08:00
|
|
|
help
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
This option enables DEFLATE (also known as ZLIB) compression
|
|
|
|
algorithm support.
|
2016-02-18 22:04:22 +08:00
|
|
|
|
|
|
|
config PSTORE_LZO_COMPRESS
|
2018-03-15 23:34:08 +08:00
|
|
|
tristate "LZO compression"
|
2018-03-07 07:57:38 +08:00
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
select CRYPTO_LZO
|
2018-03-07 07:57:38 +08:00
|
|
|
help
|
|
|
|
This option enables LZO compression algorithm support.
|
2016-02-18 22:04:22 +08:00
|
|
|
|
|
|
|
config PSTORE_LZ4_COMPRESS
|
2018-03-15 23:34:08 +08:00
|
|
|
tristate "LZ4 compression"
|
2018-03-07 07:57:38 +08:00
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
select CRYPTO_LZ4
|
2018-03-07 07:57:38 +08:00
|
|
|
help
|
|
|
|
This option enables LZ4 compression algorithm support.
|
2018-02-13 14:40:39 +08:00
|
|
|
|
|
|
|
config PSTORE_LZ4HC_COMPRESS
|
2018-03-15 23:34:08 +08:00
|
|
|
tristate "LZ4HC compression"
|
2018-03-07 07:57:38 +08:00
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
select CRYPTO_LZ4HC
|
2018-02-13 14:40:39 +08:00
|
|
|
help
|
|
|
|
This option enables LZ4HC (high compression) mode algorithm.
|
|
|
|
|
|
|
|
config PSTORE_842_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
bool "842 compression"
|
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
select CRYPTO_842
|
2018-02-13 14:40:39 +08:00
|
|
|
help
|
|
|
|
This option enables 842 compression algorithm support.
|
|
|
|
|
2018-08-01 19:23:37 +08:00
|
|
|
config PSTORE_ZSTD_COMPRESS
|
|
|
|
bool "zstd compression"
|
|
|
|
depends on PSTORE
|
|
|
|
select CRYPTO_ZSTD
|
|
|
|
help
|
|
|
|
This option enables zstd compression algorithm support.
|
|
|
|
|
2018-03-07 07:57:38 +08:00
|
|
|
config PSTORE_COMPRESS
|
|
|
|
def_bool y
|
|
|
|
depends on PSTORE
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
depends on PSTORE_DEFLATE_COMPRESS || PSTORE_LZO_COMPRESS || \
|
2018-03-07 07:57:38 +08:00
|
|
|
PSTORE_LZ4_COMPRESS || PSTORE_LZ4HC_COMPRESS || \
|
2018-08-01 19:23:37 +08:00
|
|
|
PSTORE_842_COMPRESS || PSTORE_ZSTD_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2018-08-01 19:23:37 +08:00
|
|
|
Currently, pstore has support for 6 compression algorithms:
|
|
|
|
deflate, lzo, lz4, lz4hc, 842 and zstd.
|
2018-03-07 07:57:38 +08:00
|
|
|
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
The default compression algorithm is deflate.
|
2018-03-07 07:57:38 +08:00
|
|
|
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
config PSTORE_DEFLATE_COMPRESS_DEFAULT
|
2018-03-15 23:34:08 +08:00
|
|
|
bool "deflate" if PSTORE_DEFLATE_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
|
|
|
config PSTORE_LZO_COMPRESS_DEFAULT
|
2018-03-15 23:34:08 +08:00
|
|
|
bool "lzo" if PSTORE_LZO_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
|
|
|
config PSTORE_LZ4_COMPRESS_DEFAULT
|
2018-03-15 23:34:08 +08:00
|
|
|
bool "lz4" if PSTORE_LZ4_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
|
|
|
config PSTORE_LZ4HC_COMPRESS_DEFAULT
|
2018-03-15 23:34:08 +08:00
|
|
|
bool "lz4hc" if PSTORE_LZ4HC_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
|
|
|
config PSTORE_842_COMPRESS_DEFAULT
|
2018-03-15 23:34:08 +08:00
|
|
|
bool "842" if PSTORE_842_COMPRESS
|
2018-03-07 07:57:38 +08:00
|
|
|
|
2018-08-01 19:23:37 +08:00
|
|
|
config PSTORE_ZSTD_COMPRESS_DEFAULT
|
|
|
|
bool "zstd" if PSTORE_ZSTD_COMPRESS
|
|
|
|
|
2016-02-18 22:04:22 +08:00
|
|
|
endchoice
|
|
|
|
|
2018-03-07 07:57:38 +08:00
|
|
|
config PSTORE_COMPRESS_DEFAULT
|
|
|
|
string
|
|
|
|
depends on PSTORE_COMPRESS
|
pstore: Use crypto compress API
In the pstore compression part, we use zlib/lzo/lz4/lz4hc/842
compression algorithm API to implement pstore compression backends. But
there are many repeat codes in these implementations. This patch uses
crypto compress API to simplify these codes.
1) rewrite allocate_buf_for_compression, free_buf_for_compression,
pstore_compress, pstore_decompress functions using crypto compress API.
2) drop compress, decompress, allocate, free functions in pstore_zbackend,
and add zbufsize function to get each different compress buffer size.
3) use late_initcall to call ramoops_init later, to make sure the crypto
subsystem has already initialized.
4) use 'unsigned int' type instead of 'size_t' in pstore_compress,
pstore_decompress functions' length arguments.
5) rename 'zlib' to 'deflate' to follow the crypto API's name convention.
Signed-off-by: Geliang Tang <geliangtang@gmail.com>
[kees: tweaked error messages on allocation failures and Kconfig help]
Signed-off-by: Kees Cook <keescook@chromium.org>
2018-03-09 18:51:07 +08:00
|
|
|
default "deflate" if PSTORE_DEFLATE_COMPRESS_DEFAULT
|
2018-03-07 07:57:38 +08:00
|
|
|
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
|
2018-08-01 19:23:37 +08:00
|
|
|
default "zstd" if PSTORE_ZSTD_COMPRESS_DEFAULT
|
2018-03-07 07:57:38 +08:00
|
|
|
|
2012-05-26 21:20:19 +08:00
|
|
|
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.
|
|
|
|
|
2015-01-17 08:01:10 +08:00
|
|
|
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.
|
|
|
|
|
2012-07-10 08:10:41 +08:00
|
|
|
config PSTORE_FTRACE
|
|
|
|
bool "Persistent function tracer"
|
|
|
|
depends on PSTORE
|
|
|
|
depends on FUNCTION_TRACER
|
pstore/ftrace: Convert to its own enable/disable debugfs knob
With this patch we no longer reuse function tracer infrastructure, now
we register our own tracer back-end via a debugfs knob.
It's a bit more code, but that is the only downside. On the bright side we
have:
- Ability to make persistent_ram module removable (when needed, we can
move ftrace_ops struct into a module). Note that persistent_ram is still
not removable for other reasons, but with this patch it's just one
thing less to worry about;
- Pstore part is more isolated from the generic function tracer. We tried
it already by registering our own tracer in available_tracers, but that
way we're loosing ability to see the traces while we record them to
pstore. This solution is somewhere in the middle: we only register
"internal ftracer" back-end, but not the "front-end";
- When there is only pstore tracing enabled, the kernel will only write
to the pstore buffer, omitting function tracer buffer (which, of course,
still can be enabled via 'echo function > current_tracer').
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
2012-07-18 05:26:15 +08:00
|
|
|
depends on DEBUG_FS
|
2012-07-10 08:10:41 +08:00
|
|
|
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.
|
|
|
|
|
2012-05-16 20:43:08 +08:00
|
|
|
config PSTORE_RAM
|
|
|
|
tristate "Log panic/oops to a RAM buffer"
|
|
|
|
depends on PSTORE
|
2012-05-17 15:15:08 +08:00
|
|
|
depends on HAS_IOMEM
|
|
|
|
select REED_SOLOMON
|
|
|
|
select REED_SOLOMON_ENC8
|
|
|
|
select REED_SOLOMON_DEC8
|
2012-05-16 20:43:08 +08:00
|
|
|
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".
|
|
|
|
|
2016-10-18 20:12:27 +08:00
|
|
|
For more information, see Documentation/admin-guide/ramoops.rst.
|