[PATCH v2 0/5] allow ramoops to collect all kmesg_dump events

From: Pavel Tatashin
Date: Tue May 05 2020 - 11:45:57 EST


pstore /mnt/console-ramoops-0 outputs only messages below the console
loglevel, and our console loglevel is set to 3 due to slowness of
serial console. Which means only errors and worse types of messages
are recorded. There is no way to have different log levels for
different consoles.

This patch series adds a new option to ramoops: max_reason that enables
it to collect kmdesg dumps for other reasons beside oops and panics.

How to quickly test:

virtme-run --mods=auto --kdir --mods=auto --kdir . \
-a memmap=1G$8G -a ramoops.mem_address=0x200000000 \
-a ramoops.mem_size=0x100000 -a ramoops.record_size=32768 \
-a ramoops.max_reason=5 -a quiet --qemu-opts -m 8G
..
# reboot -f

After VM is back:

# mount -t pstore pstore /mnt
# head /mnt/dmesg-ramoops-0
Restart#1 Part1
...

Changelog:

v1:
https://lore.kernel.org/lkml/20200502143555.543636-1-pasha.tatashin@xxxxxxxxxx

v2:
Addressed comments from Kees Cook, Steven Rostedt, and Sergey Senozhatsky
- Replaced dump_all with max_reason
- removed duplicated enum value
- moved always_kmsg_dump logic back to kmsg_dump().

Pavel Tatashin (5):
printk: honor the max_reason field in kmsg_dumper
pstore/platform: pass max_reason to kmesg dump
pstore/ram: in ramoops_platform_data convert dump_oops to max_reason
pstore/ram: allow to dump kmesg during regular reboot
ramoops: add max_reason optional field to ramoops DT node

Documentation/admin-guide/ramoops.rst | 11 +++---
.../bindings/reserved-memory/ramoops.txt | 10 ++++--
drivers/platform/chrome/chromeos_pstore.c | 2 +-
fs/pstore/platform.c | 4 ++-
fs/pstore/ram.c | 35 +++++++++----------
include/linux/kmsg_dump.h | 1 +
include/linux/pstore.h | 3 ++
include/linux/pstore_ram.h | 2 +-
kernel/printk/printk.c | 15 +++++---
9 files changed, 51 insertions(+), 32 deletions(-)

--
2.25.1