mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 06:01:53 +02:00
s390/boot: Add bootdebug option to control debug messages
Suppress decompressor debug messages by default, similar to regular kernel debug messages that require 'DEBUG' or 'dyndbg' to be enabled (depending on CONFIG_DYNAMIC_DEBUG). Introduce a 'bootdebug' option to enable printing these messages when needed. All messages are still stored in the boot ring buffer regardless. To enable boot debug messages: bootdebug debug Or combine with 'earlyprintk' to print them without delay: bootdebug debug earlyprintk 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
c09f8d0ad6
commit
d20d8e5133
|
|
@ -317,6 +317,8 @@ void parse_boot_command_line(void)
|
|||
boot_earlyprintk = true;
|
||||
if (!strcmp(param, "debug"))
|
||||
boot_console_loglevel = CONSOLE_LOGLEVEL_DEBUG;
|
||||
if (!strcmp(param, "bootdebug"))
|
||||
bootdebug = true;
|
||||
if (!strcmp(param, "quiet"))
|
||||
boot_console_loglevel = CONSOLE_LOGLEVEL_QUIET;
|
||||
if (!strcmp(param, "ignore_loglevel"))
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ bool boot_ignore_loglevel;
|
|||
char __bootdata(boot_rb)[PAGE_SIZE * 2];
|
||||
bool __bootdata(boot_earlyprintk);
|
||||
size_t __bootdata(boot_rb_off);
|
||||
bool __bootdata(bootdebug);
|
||||
|
||||
static void boot_rb_add(const char *str, size_t len)
|
||||
{
|
||||
|
|
@ -168,6 +169,9 @@ static void boot_console_earlyprintk(const char *buf)
|
|||
/* always print emergency messages */
|
||||
if (level > LOGLEVEL_EMERG && !boot_earlyprintk)
|
||||
return;
|
||||
/* print debug messages only when bootdebug is enabled */
|
||||
if (level == LOGLEVEL_DEBUG && !bootdebug)
|
||||
return;
|
||||
if (boot_ignore_loglevel || level < boot_console_loglevel)
|
||||
sclp_early_printk(printk_skip_level(buf));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ extern unsigned long early_ipl_comp_list_size;
|
|||
extern char boot_rb[PAGE_SIZE * 2];
|
||||
extern bool boot_earlyprintk;
|
||||
extern size_t boot_rb_off;
|
||||
extern bool bootdebug;
|
||||
|
||||
#define boot_rb_foreach(cb) \
|
||||
do { \
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ decompressor_handled_param(facilities);
|
|||
decompressor_handled_param(nokaslr);
|
||||
decompressor_handled_param(cmma);
|
||||
decompressor_handled_param(relocate_lowcore);
|
||||
decompressor_handled_param(bootdebug);
|
||||
#if IS_ENABLED(CONFIG_KVM)
|
||||
decompressor_handled_param(prot_virt);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -160,6 +160,7 @@ struct oldmem_data __bootdata_preserved(oldmem_data);
|
|||
char __bootdata(boot_rb)[PAGE_SIZE * 2];
|
||||
bool __bootdata(boot_earlyprintk);
|
||||
size_t __bootdata(boot_rb_off);
|
||||
bool __bootdata(bootdebug);
|
||||
|
||||
unsigned long __bootdata_preserved(VMALLOC_START);
|
||||
EXPORT_SYMBOL(VMALLOC_START);
|
||||
|
|
@ -882,13 +883,18 @@ static void __init log_component_list(void)
|
|||
}
|
||||
|
||||
/*
|
||||
* Print avoiding interpretation of % in buf
|
||||
* Print avoiding interpretation of % in buf and taking bootdebug option
|
||||
* into consideration.
|
||||
*/
|
||||
static void __init print_rb_entry(char *buf)
|
||||
{
|
||||
char fmt[] = KERN_SOH "0boot: %s";
|
||||
int level = printk_get_level(buf);
|
||||
|
||||
fmt[1] = printk_get_level(buf);
|
||||
if (level == KERN_DEBUG[1] && !bootdebug)
|
||||
return;
|
||||
|
||||
fmt[1] = level;
|
||||
printk(fmt, printk_skip_level(buf));
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user