[linux-yocto] [linux-yocto-rt][PATCH] printk: revert part of code of printk emergency mechanism

Hongzhi, Song hongzhi.song at windriver.com
Mon Apr 22 20:19:26 PDT 2019


Please merge to v5.0/standard/preempt-rt/base and 
v5.0/standard/preempt-rt/intel-x86


--Hongzhi


On 4/23/19 11:14 AM, Hongzhi.Song wrote:
> Two commits from rt-kernel cause the following disorder log at the
> early stage of boot with qemux86-64. Maybe it has other disorder logs
> which I omit.
>
> Commits:
> 7128a815: printk: introduce emergency messages
> b9d460e4: serial: 8250: implement write_atomic
>
> [    0.401166] 000: 6200.04 BogoMIPS (lpj=3100023)
> [    0.877953] 000: Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
> [    0.877953] 000:  (family: 0x6, model: 0xf
> [    0.877953] 000: , stepping: 0xb)
> [    1.255009] 000:  5
> [    1.255167] 000:  *10
> [    1.255295] 000:  11
> [    1.255406] 000: )
>
> Obviously, the printk emergency mechanism doesn't work as expected.
> Removing partial code of printk emergency mechanism can
> fix the issue temporarily.
>
> Signed-off-by: Hongzhi.Song <hongzhi.song at windriver.com>
> ---
>   kernel/printk/printk.c | 4 ++++
>   1 file changed, 4 insertions(+)
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 997d07b..99d4a94 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1726,6 +1726,7 @@ static void call_console_drivers(u64 seq, const char *ext_text, size_t ext_len,
>   			con->wrote_history = 1;
>   			con->printk_seq = seq - 1;
>   		}
> +#if 0
>   		if (con->write_atomic && level < emergency_console_loglevel &&
>   		    facility == 0) {
>   			/* skip emergency messages, already printed */
> @@ -1733,6 +1734,7 @@ static void call_console_drivers(u64 seq, const char *ext_text, size_t ext_len,
>   				con->printk_seq = seq;
>   			continue;
>   		}
> +#endif
>   		if (con->flags & CON_BOOT && facility == 0) {
>   			/* skip emergency messages, already printed */
>   			if (con->printk_seq < seq)
> @@ -3134,10 +3136,12 @@ static void call_emergency_console_drivers(int level, const char *text,
>   	for_each_console(con) {
>   		if (!(con->flags & CON_ENABLED))
>   			continue;
> +#if 0
>   		if (con->write_atomic && level < emergency_console_loglevel) {
>   			con->write_atomic(con, text, text_len);
>   			continue;
>   		}
> +#endif
>   		if (con->write && (con->flags & CON_BOOT)) {
>   			con->write(con, text, text_len);
>   			continue;


More information about the linux-yocto mailing list