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