• Paul Burton's avatar
    console: don't prefer first registered if DT specifies stdout-path · 05fd007e
    Paul Burton authored
    If a device tree specifies a preferred device for kernel console output
    via the stdout-path or linux,stdout-path chosen node properties or the
    stdout alias then the kernel ought to honor it & output the kernel
    console to that device.  As it stands, this isn't the case.  Whilst we
    parse the stdout-path properties & set an of_stdout variable from
    of_alias_scan(), and use that from of_console_check() to determine
    whether to add a console device as a preferred console whilst
    registering it, we also prefer the first registered console if no other
    has been selected at the time of its registration.
    
    This means that if a console other than the one the device tree selects
    via stdout-path is registered first, we will switch to using it & when
    the stdout-path console is later registered the call to
    add_preferred_console() via of_console_check() is too late to do
    anything useful.  In practice this seems to mean that we switch to the
    dummy console device fairly early & see no further console output:
    
        Console: colour dummy device 80x25
        console [tty0] enabled
        bootconsole [ns16550a0] disabled
    
    Fix this by not automatically preferring the first registered console if
    one is specified by the device tree.  This allows consoles to be
    registered but not enabled, and once the driver for the console selected
    by stdout-path calls of_console_check() the driver will be added to the
    list of preferred consoles before any other console has been enabled.
    When that console is then registered via register_console() it will be
    enabled as expected.
    
    Link: http://lkml.kernel.org/r/20160809151937.26118-1-paul.burton@imgtec.com
    
    Signed-off-by: default avatarPaul Burton <paul.burton@imgtec.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@imgtec.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Ivan Delalande <colona@arista.com>
    Cc: Thierry Reding <treding@nvidia.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Jan Kara <jack@suse.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Joe Perches <joe@perches.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: Frank Rowand <frowand.list@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    05fd007e
console.h 6.44 KB