• Linus Torvalds's avatar
    printk: remove console flushing special cases for partial buffered lines · 5c2992ee
    Linus Torvalds authored
    
    
    It actively hurts proper merging, and makes for a lot of special cases.
    There was a good(ish) reason for doing it originally, but it's getting
    too painful to maintain.  And most of the original reasons for it are
    long gone.
    
    So instead of having special code to flush partial lines to the console
    (as opposed to the record buffers), do _all_ the console writing from
    the record buffer, and be done with it.
    
    If an oops happens (or some other synchronous event), we will flush the
    partial lines due to the oops printing activity, so this does not affect
    that.  It does mean that if you have a completely hung machine, a
    partial preceding line may not have been printed out.
    
    That was some of the original reason for this complexity, in fact, back
    when we used to test for the historical i386 "halt" instruction problem
    by doing
    
    	pr_info("Checking 'hlt' instruction... ");
    
    	if (!boot_cpu_data.hlt_works_ok) {
    		pr_cont("disabled\n");
    		return;
    	}
    	halt();
    	halt();
    	halt();
    	halt();
    	pr_cont("OK\n");
    
    and that model no longer works (it the 'hlt' instruction kills the
    machine, the partial line won't have been flushed, so you won't even see
    it).
    
    Of course, that was also back in the days when people actually had
    textual console output rather than a graphical splash-screen at bootup.
    How times change..
    
    Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Tested-by: default avatarPetr Mladek <pmladek@suse.com>
    Tested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Tested-by: default avatarMark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5c2992ee
printk.c 79.9 KB