GNU Linux-libre 5.10.217-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         select RT_MUTEXES
122         help
123           When the option is enabled, pstore will export a character
124           interface /dev/pmsg0 to log user space messages. On reboot
125           data can be retrieved from /sys/fs/pstore/pmsg-ramoops-[ID].
126
127           If unsure, say N.
128
129 config PSTORE_FTRACE
130         bool "Persistent function tracer"
131         depends on PSTORE
132         depends on FUNCTION_TRACER
133         depends on DEBUG_FS
134         help
135           With this option kernel traces function calls into a persistent
136           ram buffer that can be decoded and dumped after reboot through
137           pstore filesystem. It can be used to determine what function
138           was last called before a reset or panic.
139
140           If unsure, say N.
141
142 config PSTORE_RAM
143         tristate "Log panic/oops to a RAM buffer"
144         depends on PSTORE
145         depends on HAS_IOMEM
146         select REED_SOLOMON
147         select REED_SOLOMON_ENC8
148         select REED_SOLOMON_DEC8
149         help
150           This enables panic and oops messages to be logged to a circular
151           buffer in RAM where it can be read back at some later point.
152
153           Note that for historical reasons, the module will be named
154           "ramoops.ko".
155
156           For more information, see Documentation/admin-guide/ramoops.rst.
157
158 config PSTORE_ZONE
159         tristate
160         depends on PSTORE
161         help
162           The common layer for pstore/blk (and pstore/ram in the future)
163           to manage storage in zones.
164
165 config PSTORE_BLK
166         tristate "Log panic/oops to a block device"
167         depends on PSTORE
168         depends on BLOCK
169         depends on BROKEN
170         select PSTORE_ZONE
171         default n
172         help
173           This enables panic and oops message to be logged to a block dev
174           where it can be read back at some later point.
175
176           For more information, see Documentation/admin-guide/pstore-blk.rst
177
178           If unsure, say N.
179
180 config PSTORE_BLK_BLKDEV
181         string "block device identifier"
182         depends on PSTORE_BLK
183         default ""
184         help
185           Which block device should be used for pstore/blk.
186
187           It accepts the following variants:
188           1) <hex_major><hex_minor> device number in hexadecimal representation,
189              with no leading 0x, for example b302.
190           2) /dev/<disk_name> represents the device name of disk
191           3) /dev/<disk_name><decimal> represents the device name and number
192              of partition - device number of disk plus the partition number
193           4) /dev/<disk_name>p<decimal> - same as the above, this form is
194              used when disk name of partitioned disk ends with a digit.
195           5) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing the
196              unique id of a partition if the partition table provides it.
197              The UUID may be either an EFI/GPT UUID, or refer to an MSDOS
198              partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-
199              filled hex representation of the 32-bit "NT disk signature", and PP
200              is a zero-filled hex representation of the 1-based partition number.
201           6) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in relation
202              to a partition with a known unique id.
203           7) <major>:<minor> major and minor number of the device separated by
204              a colon.
205
206           NOTE that, both Kconfig and module parameters can configure
207           pstore/blk, but module parameters have priority over Kconfig.
208
209 config PSTORE_BLK_KMSG_SIZE
210         int "Size in Kbytes of kmsg dump log to store"
211         depends on PSTORE_BLK
212         default 64
213         help
214           This just sets size of kmsg dump (oops, panic, etc) log for
215           pstore/blk. The size is in KB and must be a multiple of 4.
216
217           NOTE that, both Kconfig and module parameters can configure
218           pstore/blk, but module parameters have priority over Kconfig.
219
220 config PSTORE_BLK_MAX_REASON
221         int "Maximum kmsg dump reason to store"
222         depends on PSTORE_BLK
223         default 2
224         help
225           The maximum reason for kmsg dumps to store. The default is
226           2 (KMSG_DUMP_OOPS), see include/linux/kmsg_dump.h's
227           enum kmsg_dump_reason for more details.
228
229           NOTE that, both Kconfig and module parameters can configure
230           pstore/blk, but module parameters have priority over Kconfig.
231
232 config PSTORE_BLK_PMSG_SIZE
233         int "Size in Kbytes of pmsg to store"
234         depends on PSTORE_BLK
235         depends on PSTORE_PMSG
236         default 64
237         help
238           This just sets size of pmsg (pmsg_size) for pstore/blk. The size is
239           in KB and must be a multiple of 4.
240
241           NOTE that, both Kconfig and module parameters can configure
242           pstore/blk, but module parameters have priority over Kconfig.
243
244 config PSTORE_BLK_CONSOLE_SIZE
245         int "Size in Kbytes of console log to store"
246         depends on PSTORE_BLK
247         depends on PSTORE_CONSOLE
248         default 64
249         help
250           This just sets size of console log (console_size) to store via
251           pstore/blk. The size is in KB and must be a multiple of 4.
252
253           NOTE that, both Kconfig and module parameters can configure
254           pstore/blk, but module parameters have priority over Kconfig.
255
256 config PSTORE_BLK_FTRACE_SIZE
257         int "Size in Kbytes of ftrace log to store"
258         depends on PSTORE_BLK
259         depends on PSTORE_FTRACE
260         default 64
261         help
262           This just sets size of ftrace log (ftrace_size) for pstore/blk. The
263           size is in KB and must be a multiple of 4.
264
265           NOTE that, both Kconfig and module parameters can configure
266           pstore/blk, but module parameters have priority over Kconfig.