mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
s390/boot: Dump message ring buffer on crash with bootdebug
Dump the boot message ring buffer when a crash occurs during boot, but only if bootdebug is enabled. This helps assist in analyzing boot-time issues by providing additional debugging information. Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Acked-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
This commit is contained in:
parent
b79015ae63
commit
b2a992a55f
|
|
@ -76,6 +76,7 @@ int __printf(1, 2) boot_printk(const char *fmt, ...);
|
|||
void print_stacktrace(unsigned long sp);
|
||||
void error(char *m);
|
||||
int get_random(unsigned long limit, unsigned long *value);
|
||||
void boot_rb_dump(void);
|
||||
|
||||
#ifndef boot_fmt
|
||||
#define boot_fmt(fmt) fmt
|
||||
|
|
|
|||
|
|
@ -37,6 +37,8 @@ void print_pgm_check_info(void)
|
|||
unsigned long *gpregs = (unsigned long *)get_lowcore()->gpregs_save_area;
|
||||
struct psw_bits *psw = &psw_bits(get_lowcore()->psw_save_area);
|
||||
|
||||
if (bootdebug)
|
||||
boot_rb_dump();
|
||||
boot_emerg("Linux version %s\n", kernel_version);
|
||||
if (!is_prot_virt_guest() && early_command_line[0])
|
||||
boot_emerg("Kernel command line: %s\n", early_command_line);
|
||||
|
|
|
|||
|
|
@ -32,6 +32,24 @@ static void boot_rb_add(const char *str, size_t len)
|
|||
boot_rb_off += len + 1;
|
||||
}
|
||||
|
||||
static void print_rb_entry(const char *str)
|
||||
{
|
||||
sclp_early_printk(printk_skip_level(str));
|
||||
}
|
||||
|
||||
static bool debug_messages_printed(void)
|
||||
{
|
||||
return boot_earlyprintk && (boot_ignore_loglevel || boot_console_loglevel > LOGLEVEL_DEBUG);
|
||||
}
|
||||
|
||||
void boot_rb_dump(void)
|
||||
{
|
||||
if (debug_messages_printed())
|
||||
return;
|
||||
sclp_early_printk("Boot messages ring buffer:\n");
|
||||
boot_rb_foreach(print_rb_entry);
|
||||
}
|
||||
|
||||
const char hex_asc[] = "0123456789abcdef";
|
||||
|
||||
static char *as_hex(char *dst, unsigned long val, int pad)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user