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