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_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 26config 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 33config 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 40config 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 47config 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 54config 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 61config 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 68choice 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 99endchoice 100 101config 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 111config 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 118config 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 129config 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 142config PSTORE_BLACKBOX 143 bool "Store customised fault log" 144 depends on PSTORE 145 depends on BLACKBOX 146 help 147 Enable storing the customised fault log for BlackBox. 148 149 With the option enabled, pstore will store the customised kernel 150 fault log for BlackBox when oops or panic happened. 151 152 If unsure, say N. 153 154config PSTORE_RAM 155 tristate "Log panic/oops to a RAM buffer" 156 depends on PSTORE 157 depends on HAS_IOMEM 158 select REED_SOLOMON 159 select REED_SOLOMON_ENC8 160 select REED_SOLOMON_DEC8 161 help 162 This enables panic and oops messages to be logged to a circular 163 buffer in RAM where it can be read back at some later point. 164 165 Note that for historical reasons, the module will be named 166 "ramoops.ko". 167 168 For more information, see Documentation/admin-guide/ramoops.rst. 169 170config PSTORE_ZONE 171 tristate 172 depends on PSTORE 173 help 174 The common layer for pstore/blk (and pstore/ram in the future) 175 to manage storage in zones. 176 177config PSTORE_BLK 178 tristate "Log panic/oops to a block device" 179 depends on PSTORE 180 depends on BLOCK 181 depends on BLACKBOX_USE_PSTORE_BLK_DEBUG || BROKEN 182 select PSTORE_ZONE 183 default n 184 help 185 This enables panic and oops message to be logged to a block dev 186 where it can be read back at some later point. 187 188 For more information, see Documentation/admin-guide/pstore-blk.rst 189 190 If unsure, say N. 191 192config PSTORE_BLK_BLKDEV 193 string "block device identifier" 194 depends on PSTORE_BLK 195 default "" 196 help 197 Which block device should be used for pstore/blk. 198 199 It accepts the following variants: 200 1) <hex_major><hex_minor> device number in hexadecimal representation, 201 with no leading 0x, for example b302. 202 2) /dev/<disk_name> represents the device name of disk 203 3) /dev/<disk_name><decimal> represents the device name and number 204 of partition - device number of disk plus the partition number 205 4) /dev/<disk_name>p<decimal> - same as the above, this form is 206 used when disk name of partitioned disk ends with a digit. 207 5) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing the 208 unique id of a partition if the partition table provides it. 209 The UUID may be either an EFI/GPT UUID, or refer to an MSDOS 210 partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero- 211 filled hex representation of the 32-bit "NT disk signature", and PP 212 is a zero-filled hex representation of the 1-based partition number. 213 6) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in relation 214 to a partition with a known unique id. 215 7) <major>:<minor> major and minor number of the device separated by 216 a colon. 217 218 NOTE that, both Kconfig and module parameters can configure 219 pstore/blk, but module parameters have priority over Kconfig. 220 221config PSTORE_BLK_KMSG_SIZE 222 int "Size in Kbytes of kmsg dump log to store" 223 depends on PSTORE_BLK 224 default 64 225 help 226 This just sets size of kmsg dump (oops, panic, etc) log for 227 pstore/blk. The size is in KB and must be a multiple of 4. 228 229 NOTE that, both Kconfig and module parameters can configure 230 pstore/blk, but module parameters have priority over Kconfig. 231 232config PSTORE_BLK_MAX_REASON 233 int "Maximum kmsg dump reason to store" 234 depends on PSTORE_BLK 235 default 2 236 help 237 The maximum reason for kmsg dumps to store. The default is 238 2 (KMSG_DUMP_OOPS), see include/linux/kmsg_dump.h's 239 enum kmsg_dump_reason for more details. 240 241 NOTE that, both Kconfig and module parameters can configure 242 pstore/blk, but module parameters have priority over Kconfig. 243 244config PSTORE_BLK_PMSG_SIZE 245 int "Size in Kbytes of pmsg to store" 246 depends on PSTORE_BLK 247 depends on PSTORE_PMSG 248 default 64 249 help 250 This just sets size of pmsg (pmsg_size) for pstore/blk. The size is 251 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 256config PSTORE_BLK_CONSOLE_SIZE 257 int "Size in Kbytes of console log to store" 258 depends on PSTORE_BLK 259 depends on PSTORE_CONSOLE 260 default 64 261 help 262 This just sets size of console log (console_size) to store via 263 pstore/blk. The 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. 267 268config PSTORE_BLK_FTRACE_SIZE 269 int "Size in Kbytes of ftrace log to store" 270 depends on PSTORE_BLK 271 depends on PSTORE_FTRACE 272 default 64 273 help 274 This just sets size of ftrace log (ftrace_size) for pstore/blk. The 275 size is in KB and must be a multiple of 4. 276 277 NOTE that, both Kconfig and module parameters can configure 278 pstore/blk, but module parameters have priority over Kconfig. 279 280config PSTORE_BLK_BLACKBOX_SIZE 281 int "Size in Kbytes of fault log for BlackBox to store" 282 depends on PSTORE_BLK 283 depends on PSTORE_BLACKBOX 284 default 64 285 help 286 This just sets size of fault log (blackbox_size) for pstore/blk. 287 The size is in KB and must be a multiple of 4. 288 289 NOTE that, both Kconfig and module parameters can configure 290 pstore/blk, but module parameters have priority over Kconfig. 291 292config PSTORE_BLACKBOX_STACK_SIZE 293 int "Default stack size for BlackBox" if EXPERT 294 depends on PSTORE 295 depends on PSTORE_BLACKBOX 296 default 1024 297 help 298 Defines default size of pstore stack size for blackbox. 299 Can be enlarged if needed. not recommended to shrink it. 300