diff options
author | Petr Mladek <pmladek@suse.com> | 2024-11-18 14:07:05 +0100 |
---|---|---|
committer | Petr Mladek <pmladek@suse.com> | 2024-11-18 14:07:05 +0100 |
commit | 34767e5357fc8051b192ff3fd921ade7c1b37c46 (patch) | |
tree | 9a5035eed562a39281164e4ab95e5ea818d073f6 /kernel/printk/printk.c | |
parent | a961ec4e2860af4933e8c1763fe4f038c2d6ac80 (diff) | |
parent | da115c4ee29f589bb72ec2e86eb5e196b6bbcb41 (diff) |
Merge branch 'for-6.13-force-console' into for-linus
Diffstat (limited to 'kernel/printk/printk.c')
-rw-r--r-- | kernel/printk/printk.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 968830cfc606..d27a64d58023 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1337,11 +1337,11 @@ static void boot_delay_msec(int level) { unsigned long long k; unsigned long timeout; + bool suppress = !is_printk_force_console() && + suppress_message_printing(level); - if ((boot_delay == 0 || system_state >= SYSTEM_RUNNING) - || suppress_message_printing(level)) { + if ((boot_delay == 0 || system_state >= SYSTEM_RUNNING) || suppress) return; - } k = (unsigned long long)loops_per_msec * boot_delay; @@ -2291,6 +2291,9 @@ int vprintk_store(int facility, int level, if (dev_info) flags |= LOG_NEWLINE; + if (is_printk_force_console()) + flags |= LOG_FORCE_CON; + if (flags & LOG_CONT) { prb_rec_init_wr(&r, reserve_size); if (prb_reserve_in_last(&e, prb, &r, caller_id, PRINTKRB_RECORD_MAX)) { @@ -2298,6 +2301,9 @@ int vprintk_store(int facility, int level, facility, &flags, fmt, args); r.info->text_len += text_len; + if (flags & LOG_FORCE_CON) + r.info->flags |= LOG_FORCE_CON; + if (flags & LOG_NEWLINE) { r.info->flags |= LOG_NEWLINE; prb_final_commit(&e); @@ -2965,6 +2971,7 @@ bool printk_get_next_message(struct printk_message *pmsg, u64 seq, struct printk_info info; struct printk_record r; size_t len = 0; + bool force_con; /* * Formatting extended messages requires a separate buffer, so use the @@ -2983,9 +2990,13 @@ bool printk_get_next_message(struct printk_message *pmsg, u64 seq, pmsg->seq = r.info->seq; pmsg->dropped = r.info->seq - seq; + force_con = r.info->flags & LOG_FORCE_CON; - /* Skip record that has level above the console loglevel. */ - if (may_suppress && suppress_message_printing(r.info->level)) + /* + * Skip records that are not forced to be printed on consoles and that + * has level above the console loglevel. + */ + if (!force_con && may_suppress && suppress_message_printing(r.info->level)) goto out; if (is_extended) { |