@@ -1337,11 +1337,11 @@ static void boot_delay_msec(int level)
13371337{
13381338 unsigned long long k ;
13391339 unsigned long timeout ;
1340+ bool suppress = !is_printk_force_console () &&
1341+ suppress_message_printing (level );
13401342
1341- if ((boot_delay == 0 || system_state >= SYSTEM_RUNNING )
1342- || suppress_message_printing (level )) {
1343+ if ((boot_delay == 0 || system_state >= SYSTEM_RUNNING ) || suppress )
13431344 return ;
1344- }
13451345
13461346 k = (unsigned long long )loops_per_msec * boot_delay ;
13471347
@@ -2291,13 +2291,19 @@ int vprintk_store(int facility, int level,
22912291 if (dev_info )
22922292 flags |= LOG_NEWLINE ;
22932293
2294+ if (is_printk_force_console ())
2295+ flags |= LOG_FORCE_CON ;
2296+
22942297 if (flags & LOG_CONT ) {
22952298 prb_rec_init_wr (& r , reserve_size );
22962299 if (prb_reserve_in_last (& e , prb , & r , caller_id , PRINTKRB_RECORD_MAX )) {
22972300 text_len = printk_sprint (& r .text_buf [r .info -> text_len ], reserve_size ,
22982301 facility , & flags , fmt , args );
22992302 r .info -> text_len += text_len ;
23002303
2304+ if (flags & LOG_FORCE_CON )
2305+ r .info -> flags |= LOG_FORCE_CON ;
2306+
23012307 if (flags & LOG_NEWLINE ) {
23022308 r .info -> flags |= LOG_NEWLINE ;
23032309 prb_final_commit (& e );
@@ -2965,6 +2971,7 @@ bool printk_get_next_message(struct printk_message *pmsg, u64 seq,
29652971 struct printk_info info ;
29662972 struct printk_record r ;
29672973 size_t len = 0 ;
2974+ bool force_con ;
29682975
29692976 /*
29702977 * 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,
29832990
29842991 pmsg -> seq = r .info -> seq ;
29852992 pmsg -> dropped = r .info -> seq - seq ;
2993+ force_con = r .info -> flags & LOG_FORCE_CON ;
29862994
2987- /* Skip record that has level above the console loglevel. */
2988- if (may_suppress && suppress_message_printing (r .info -> level ))
2995+ /*
2996+ * Skip records that are not forced to be printed on consoles and that
2997+ * has level above the console loglevel.
2998+ */
2999+ if (!force_con && may_suppress && suppress_message_printing (r .info -> level ))
29893000 goto out ;
29903001
29913002 if (is_extended ) {
0 commit comments