mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
mtd: Support kmsg dumper based on pstore/blk
This introduces mtdpstore, which is similar to mtdoops but more powerful. It uses pstore/blk, and aims to store panic and oops logs to a flash partition, where pstore can later read back and present as files in the mounted pstore filesystem. To make mtdpstore work, the "blkdev" of pstore/blk should be set as MTD device name or MTD device number. For more details, see Documentation/admin-guide/pstore-blk.rst This solves a number of issues: - Work duplication: both of pstore and mtdoops do the same job storing panic/oops log. They have very similar logic, registering to kmsg dumper and storing logs to several chunks one by one. - Layer violations: drivers should provides methods instead of polices. MTD should provide read/write/erase operations, and allow a higher level drivers to provide the chunk management, kmsg dump configuration, etc. - Missing features: pstore provides many additional features, including presenting the logs as files, logging dump time and count, and supporting other frontends like pmsg, console, etc. Signed-off-by: WeiXiong Liao <liaoweixiong@allwinnertech.com> Link: https://lore.kernel.org/lkml/20200511233229.27745-11-keescook@chromium.org/ Link: https://lore.kernel.org/r/1589266715-4168-1-git-send-email-liaoweixiong@allwinnertech.com Signed-off-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
@@ -43,9 +43,9 @@ blkdev
|
||||
~~~~~~
|
||||
|
||||
The block device to use. Most of the time, it is a partition of block device.
|
||||
It's required for pstore/blk.
|
||||
It's required for pstore/blk. It is also used for MTD device.
|
||||
|
||||
It accepts the following variants:
|
||||
It accepts the following variants for block device:
|
||||
|
||||
1. <hex_major><hex_minor> device number in hexadecimal represents itself; no
|
||||
leading 0x, for example b302.
|
||||
@@ -64,6 +64,11 @@ It accepts the following variants:
|
||||
partition with a known unique id.
|
||||
#. <major>:<minor> major and minor number of the device separated by a colon.
|
||||
|
||||
It accepts the following variants for MTD device:
|
||||
|
||||
1. <device name> MTD device name. "pstore" is recommended.
|
||||
#. <device number> MTD device number.
|
||||
|
||||
kmsg_size
|
||||
~~~~~~~~~
|
||||
|
||||
|
||||
@@ -170,6 +170,16 @@ config MTD_OOPS
|
||||
buffer in a flash partition where it can be read back at some
|
||||
later point.
|
||||
|
||||
config MTD_PSTORE
|
||||
tristate "Log panic/oops to an MTD buffer based on pstore"
|
||||
depends on PSTORE_BLK
|
||||
help
|
||||
This enables panic and oops messages to be logged to a circular
|
||||
buffer in a flash partition where it can be read back as files after
|
||||
mounting pstore filesystem.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config MTD_SWAP
|
||||
tristate "Swap on MTD device support"
|
||||
depends on MTD && SWAP
|
||||
|
||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_RFD_FTL) += rfd_ftl.o
|
||||
obj-$(CONFIG_SSFDC) += ssfdc.o
|
||||
obj-$(CONFIG_SM_FTL) += sm_ftl.o
|
||||
obj-$(CONFIG_MTD_OOPS) += mtdoops.o
|
||||
obj-$(CONFIG_MTD_PSTORE) += mtdpstore.o
|
||||
obj-$(CONFIG_MTD_SWAP) += mtdswap.o
|
||||
|
||||
nftl-objs := nftlcore.o nftlmount.o
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user