Add kmsg_kmemdump_register, which registers prb, log_buf and infos/descs to kmemdump. This will allow kmemdump to be able to dump specific log buffer areas on demand. Signed-off-by: Eugen Hristev <eugen.hristev@xxxxxxxxxx> --- include/linux/kmsg_dump.h | 6 ++++++ kernel/printk/printk.c | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/linux/kmsg_dump.h b/include/linux/kmsg_dump.h index 6055fc969877..cbe76c94710b 100644 --- a/include/linux/kmsg_dump.h +++ b/include/linux/kmsg_dump.h @@ -80,6 +80,8 @@ int kmsg_dump_register(struct kmsg_dumper *dumper); int kmsg_dump_unregister(struct kmsg_dumper *dumper); +void kmsg_kmemdump_register(void); + const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason); #else static inline void kmsg_dump_desc(enum kmsg_dump_reason reason, const char *desc) @@ -112,6 +114,10 @@ static inline int kmsg_dump_unregister(struct kmsg_dumper *dumper) return -EINVAL; } +static inline void kmsg_kmemdump_register(void) +{ +} + static inline const char *kmsg_dump_reason_str(enum kmsg_dump_reason reason) { return "Disabled"; diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 057db78876cd..cf4aa86ef7af 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -48,6 +48,7 @@ #include <linux/sched/clock.h> #include <linux/sched/debug.h> #include <linux/sched/task_stack.h> +#include <linux/kmemdump.h> #include <linux/uaccess.h> #include <asm/sections.h> @@ -4650,6 +4651,18 @@ int kmsg_dump_register(struct kmsg_dumper *dumper) } EXPORT_SYMBOL_GPL(kmsg_dump_register); +void kmsg_kmemdump_register(void) +{ + kmemdump_register("log_buf", (void *)log_buf_addr_get(), log_buf_len_get()); + kmemdump_register("prb", (void *)&prb, sizeof(prb)); + kmemdump_register("prb", (void *)prb, sizeof(*prb)); + kmemdump_register("prb_descs", (void *)_printk_rb_static_descs, + sizeof(_printk_rb_static_descs)); + kmemdump_register("prb_infos", (void *)_printk_rb_static_infos, + sizeof(_printk_rb_static_infos)); +} +EXPORT_SYMBOL_GPL(kmsg_kmemdump_register); + /** * kmsg_dump_unregister - unregister a kmsg dumper. * @dumper: pointer to the kmsg_dumper structure -- 2.43.0