Re: [PATCH v3] printk: Have printk() never buffer its data
From: Kay Sievers <hidden>
Date: 2012-07-05 12:50:35
Also in:
lkml
On Thu, 2012-07-05 at 13:47 +0200, Kay Sievers wrote:
On Thu, Jul 5, 2012 at 12:20 PM, Michael Neuling [off-list ref] wrote:quoted
I can only make 2) happen on SMP. It's when the second CPU is coming up and it's printing something. The first CPU isn't printing anything at this stage (there is no garbled console here) so I don't think it's a race. I see it consistently in show_regs(). Every printk without a newline. ie I get this: --- NIP: c000000000048164 LR: c000000000048160 CTR: 0000000000000000 REGS: c00000007e59fb50 TRAP: 0700 Tainted: G W (3.5.0-rc5-mikey) MSR: 9000000000021032 < SF ,HV ,ME ,IR ,DR ,RIquoted
CR: 28000042 XER: 22000000 SOFTE: 0 CFAR: c0000000007402f8 TASK = c00000007e56bb40[0] 'swapper/1' THREAD: c00000007e59c000 CPU: 1 --- It's consistent for printks without newlines in show_regs(). MSR through to XER should all be on the same line.I see. Something to fix then, I'll have a look. Does this happen only very early during bootup, or also later when the box fully initialized? The output of 'dmesg' later looks always correct, right?
If it's an early printk issue like it looks like, where stuff got printed before we had any console registered, this might fix the issue you are seeing. Could you possibly try this patch? Thanks, Kay
--- a/kernel/printk.c
+++ b/kernel/printk.c@@ -1957,6 +1951,12 @@ skip: */ console_idx = log_next(console_idx); console_seq++; + /* + * We will get here again when we register a new + * CON_PRINTBUFFER console. Clear the flag so we + * will properly dump everything later. + */ + msg->flags &= ~LOG_NOCONS; goto skip; }