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.
273