On Fri, Dec 18, 2015 at 10:18:08AM +0000, Daniel Thompson wrote: > I'm not entirely sure that this is an improvement. What I do these days is delete everything in vprintk_emit() and simply call early_printk(). Kill the useless kmsg buffer crap and locking, just pound bytes to the UART registers without anything in between. The other semi usable solution is redirecting to trace_printk() and recovering the trace buffers from your kdump. But I've found that typically kdump doesn't work anymore if you properly wedge the machine. So this is very much a second rate solution. But this globally locked buffer, calling out to console drivers that do locking and even scheduling, is an unreliable unfixable trainwreck that I've given up on.