GNU Linux-libre 5.10.153-gnu1
[releases.git] / fs / pstore / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 config PSTORE
3         tristate "Persistent store support"
4         select CRYPTO if PSTORE_COMPRESS
5         default n
6         help
7            This option enables generic access to platform level
8            persistent storage via "pstore" filesystem that can
9            be mounted as /dev/pstore.  Only useful if you have
10            a platform level driver that registers with pstore to
11            provide the data, so you probably should just go say "Y"
12            (or "M") to a platform specific persistent store driver
13            (e.g. ACPI_APEI on X86) which will select this for you.
14            If you don't have a platform persistent store driver,
15            say N.
16
17 config PSTORE_DEFLATE_COMPRESS
18         tristate "DEFLATE (ZLIB) compression"
19         default y
20         depends on PSTORE
21         select CRYPTO_DEFLATE
22         help
23           This option enables DEFLATE (also known as ZLIB) compression
24           algorithm support.
25
26 config PSTORE_LZO_COMPRESS
27         tristate "LZO compression"
28         depends on PSTORE
29         select CRYPTO_LZO
30         help
31           This option enables LZO compression algorithm support.
32
33 config PSTORE_LZ4_COMPRESS
34         tristate "LZ4 compression"
35         depends on PSTORE
36         select CRYPTO_LZ4
37         help
38           This option enables LZ4 compression algorithm support.
39
40 config PSTORE_LZ4HC_COMPRESS
41         tristate "LZ4HC compression"
42         depends on PSTORE
43         select CRYPTO_LZ4HC
44         help
45           This option enables LZ4HC (high compression) mode algorithm.
46
47 config PSTORE_842_COMPRESS
48         bool "842 compression"
49         depends on PSTORE
50         select CRYPTO_842
51         help
52           This option enables 842 compression algorithm support.
53
54 config PSTORE_ZSTD_COMPRESS
55         bool "zstd compression"
56         depends on PSTORE
57         select CRYPTO_ZSTD
58         help
59           This option enables zstd compression algorithm support.
60
61 config PSTORE_COMPRESS
62         def_bool y
63         depends on PSTORE
64         depends on PSTORE_DEFLATE_COMPRESS || PSTORE_LZO_COMPRESS ||    \
65                    PSTORE_LZ4_COMPRESS || PSTORE_LZ4HC_COMPRESS ||      \
66                    PSTORE_842_COMPRESS || PSTORE_ZSTD_COMPRESS
67
68 choice
69         prompt "Default pstore compression algorithm"
70         depends on PSTORE_COMPRESS
71         help
72           This option chooses the default active compression algorithm.
73           This change be changed at boot with "pstore.compress=..." on
74           the kernel command line.
75
76           Currently, pstore has support for 6 compression algorithms:
77           deflate, lzo, lz4, lz4hc, 842 and zstd.
78
79           The default compression algorithm is deflate.
80
81         config PSTORE_DEFLATE_COMPRESS_DEFAULT
82                 bool "deflate" if PSTORE_DEFLATE_COMPRESS
83
84         config PSTORE_LZO_COMPRESS_DEFAULT
85                 bool "lzo" if PSTORE_LZO_COMPRESS
86
87         config PSTORE_LZ4_COMPRESS_DEFAULT
88                 bool "lz4" if PSTORE_LZ4_COMPRESS
89
90         config PSTORE_LZ4HC_COMPRESS_DEFAULT
91                 bool "lz4hc" if PSTORE_LZ4HC_COMPRESS
92
93         config PSTORE_842_COMPRESS_DEFAULT
94                 bool "842" if PSTORE_842_COMPRESS
95
96         config PSTORE_ZSTD_COMPRESS_DEFAULT
97                 bool "zstd" if PSTORE_ZSTD_COMPRESS
98
99 endchoice
100
101 config PSTORE_COMPRESS_DEFAULT
102         string
103         depends on PSTORE_COMPRESS
104         default "deflate" if PSTORE_DEFLATE_COMPRESS_DEFAULT
105         default "lzo" if PSTORE_LZO_COMPRESS_DEFAULT
106         default "lz4" if PSTORE_LZ4_COMPRESS_DEFAULT
107         default "lz4hc" if PSTORE_LZ4HC_COMPRESS_DEFAULT
108         default "842" if PSTORE_842_COMPRESS_DEFAULT
109         default "zstd" if PSTORE_ZSTD_COMPRESS_DEFAULT
110
111 config PSTORE_CONSOLE
112         bool "Log kernel console messages"
113         depends on PSTORE
114         help
115           When the option is enabled, pstore will log all kernel
116           messages, even if no oops or panic happened.
117
118 config PSTORE_PMSG
119         bool "Log user space messages"
120         depends on PSTORE
121         help
122           When the option is enabled, pstore will export a character
123           interface /dev/pmsg0 to log user space messages. On reboot
124           data can be retrieved from /sys/fs/pstore/pmsg-ramoops-[ID].
125
126           If unsure, say N.
127
128 config PSTORE_FTRACE
129         bool "Persistent function tracer"
130         depends on PSTORE
131         depends on FUNCTION_TRACER
132         depends on DEBUG_FS
133         help
134           With this option kernel traces function calls into a persistent
135           ram buffer that can be decoded and dumped after reboot through
136           pstore filesystem. It can be used to determine what function
137           was last called before a reset or panic.
138
139           If unsure, say N.
140
141 config PSTORE_RAM
142         tristate "Log panic/oops to a RAM buffer"
143         depends on PSTORE
144         depends on HAS_IOMEM
145         select REED_SOLOMON
146         select REED_SOLOMON_ENC8
147         select REED_SOLOMON_DEC8
148         help
149           This enables panic and oops messages to be logged to a circular
150           buffer in RAM where it can be read back at some later point.
151
152           Note that for historical reasons, the module will be named
153           "ramoops.ko".
154
155           For more information, see Documentation/admin-guide/ramoops.rst.
156
157 config PSTORE_ZONE
158         tristate
159         depends on PSTORE
160         help
161           The common layer for pstore/blk (and pstore/ram in the future)
162           to manage storage in zones.
163
164 config PSTORE_BLK
165         tristate "Log panic/oops to a block device"
166         depends on PSTORE
167         depends on BLOCK
168         depends on BROKEN
169         select PSTORE_ZONE
170         default n
171         help
172           This enables panic and oops message to be logged to a block dev
173           where it can be read back at some later point.
174
175           For more information, see Documentation/admin-guide/pstore-blk.rst
176
177           If unsure, say N.
178
179 config PSTORE_BLK_BLKDEV
180         string "block device identifier"
181         depends on PSTORE_BLK
182         default ""
183         help
184           Which block device should be used for pstore/blk.
185
186           It accepts the following variants:
187           1) <hex_major><hex_minor> device number in hexadecimal representation,
188              with no leading 0x, for example b302.
189           2) /dev/<disk_name> represents the device name of disk
190           3) /dev/<disk_name><decimal> represents the device name and number
191              of partition - device number of disk plus the partition number
192           4) /dev/<disk_name>p<decimal> - same as the above, this form is
193              used when disk name of partitioned disk ends with a digit.
194           5) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing the
195              unique id of a partition if the partition table provides it.
196              The UUID may be either an EFI/GPT UUID, or refer to an MSDOS
197              partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-
198              filled hex representation of the 32-bit "NT disk signature", and PP
199              is a zero-filled hex representation of the 1-based partition number.
200           6) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in relation
201              to a partition with a known unique id.
202           7) <major>:<minor> major and minor number of the device separated by
203              a colon.
204
205           NOTE that, both Kconfig and module parameters can configure
206           pstore/blk, but module parameters have priority over Kconfig.
207
208 config PSTORE_BLK_KMSG_SIZE
209         int "Size in Kbytes of kmsg dump log to store"
210         depends on PSTORE_BLK
211         default 64
212         help
213           This just sets size of kmsg dump (oops, panic, etc) log for
214           pstore/blk. The size is in KB and must be a multiple of 4.
215
216           NOTE that, both Kconfig and module parameters can configure
217           pstore/blk, but module parameters have priority over Kconfig.
218
219 config PSTORE_BLK_MAX_REASON
220         int "Maximum kmsg dump reason to store"
221         depends on PSTORE_BLK
222         default 2
223         help
224           The maximum reason for kmsg dumps to store. The default is
225           2 (KMSG_DUMP_OOPS), see include/linux/kmsg_dump.h's
226           enum kmsg_dump_reason for more details.
227
228           NOTE that, both Kconfig and module parameters can configure
229           pstore/blk, but module parameters have priority over Kconfig.
230
231 config PSTORE_BLK_PMSG_SIZE
232         int "Size in Kbytes of pmsg to store"
233         depends on PSTORE_BLK
234         depends on PSTORE_PMSG
235         default 64
236         help
237           This just sets size of pmsg (pmsg_size) for pstore/blk. The size is
238           in KB and must be a multiple of 4.
239
240           NOTE that, both Kconfig and module parameters can configure
241           pstore/blk, but module parameters have priority over Kconfig.
242
243 config PSTORE_BLK_CONSOLE_SIZE
244         int "Size in Kbytes of console log to store"
245         depends on PSTORE_BLK
246         depends on PSTORE_CONSOLE
247         default 64
248         help
249           This just sets size of console log (console_size) to store via
250           pstore/blk. The size is in KB and must be a multiple of 4.
251
252           NOTE that, both Kconfig and module parameters can configure
253           pstore/blk, but module parameters have priority over Kconfig.
254
255 config PSTORE_BLK_FTRACE_SIZE
256         int "Size in Kbytes of ftrace log to store"
257         depends on PSTORE_BLK
258         depends on PSTORE_FTRACE
259         default 64
260         help
261           This just sets size of ftrace log (ftrace_size) for pstore/blk. The
262           size is in KB and must be a multiple of 4.
263
264           NOTE that, both Kconfig and module parameters can configure
265           pstore/blk, but module parameters have priority over Kconfig.