I recently experienced some trouble with setting up an encrypted-root system, my Chromebook Plus (rk3399-gru-kevin, ARM64) would appear to hang where it should have asked for an encryption passphrase; and I eventually figured out that the kernel preferred the serial port (inaccessible to me) over the built-in working display/keyboard and was probably asking there. Running plymouth in the initramfs solves that specific problem, but both the documentation and tty-related kconfig descriptions imply that /dev/console should be tty0 if graphics are working, CONFIG_VT_CONSOLE is enabled and no explicit console argument is given in the kernel commandline. However, I'm seeing different behaviour on systems with SPCR (as in QEMU aarch64 virtual machines) and/or a device-tree chosen stdout-path node (as in most arm/arm64 devices). On these machines, depending on the console argument, the contents of the /proc/consoles file are: | "console=tty0" | (no console arg) | ------------------+-----------------------+-----------------------+ QEMU VM | tty0 -WU (EC p ) | ttyAMA0 -W- (EC a) | (w/ SPCR) | ttyAMA0 -W- (E a) | | ------------------+-----------------------+-----------------------+ Chromebook Plus | tty0 -WU (EC p ) | ttyS2 -W- (EC p a) | (w/ stdout-path) | | tty0 -WU (E ) | ------------------+-----------------------+-----------------------+ Chromebook Plus | tty0 -WU (EC p ) | tty0 -WU (EC p ) | (w/o either) | | | ------------------+-----------------------+-----------------------+ This patchset tries to ensure that VT is preferred in those conditions even in the presence of firmware-mandated serial consoles. These should cleanly apply onto next-20200430. More discussion due to or about the console confusion on ARM64: - My Debian bug report about the initramfs prompts [0] - Fedora test issue arising from ARM64 QEMU machines having SPCR [1] - Debian-installer discussion on what to do with multiple consoles [2] [0] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=952452 [1] https://bugzilla.redhat.com/show_bug.cgi?id=1661288 [2] https://lists.debian.org/debian-boot/2019/01/msg00184.html Changes in v2: - Fix #elif to #else (Reported-by: kbuild test robot <lkp@xxxxxxxxx>) - Refresh dmesg outputs with/without earlycon for next-20200430 - Use the correct format when referencing a commit Alper Nebi Yasak (3): printk: Add function to set console to preferred console's driver vt: Set as preferred console when a non-dummy backend is bound printk: Preset tty0 as a pseudo-preferred console drivers/tty/vt/vt.c | 7 +++++ include/linux/console.h | 1 + kernel/printk/printk.c | 68 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) -- 2.26.2