summaryrefslogtreecommitdiffstats
path: root/kernel/kexec_internal.h
diff options
context:
space:
mode:
authorAleksey Makarov <aleksey.makarov@linaro.org>2017-04-05 22:20:00 +0200
committerPetr Mladek <pmladek@suse.com>2017-04-12 11:40:22 +0200
commitcf39bf58afdaabc0b86f141630fb3fd18190294e (patch)
tree299a204a7447f5c84cdd1de0588b5e892c117cdd /kernel/kexec_internal.h
parentprintk: rename selected_console -> preferred_console (diff)
downloadlinux-cf39bf58afdaabc0b86f141630fb3fd18190294e.tar.xz
linux-cf39bf58afdaabc0b86f141630fb3fd18190294e.zip
printk: fix double printing with earlycon
If a console was specified by ACPI SPCR table _and_ command line parameters like "console=ttyAMA0" _and_ "earlycon" were specified, then log messages appear twice. The root cause is that the code traverses the list of specified consoles (the `console_cmdline` array) and stops at the first match. But it may happen that the same console is referred by the elements of this array twice: pl011,mmio,0x87e024000000,115200 -- from SPCR ttyAMA0 -- from command line but in this case `preferred_console` points to the second entry and the flag CON_CONSDEV is not set, so bootconsole is not deregistered. To fix that, introduce an invariant "The last non-braille console is always the preferred one" on the entries of the console_cmdline array. Then traverse it in reverse order to be sure that if the console is preferred then it will be the first matching entry. Introduce variable console_cmdline_cnt that keeps the number of elements of the console_cmdline array (Petr Mladek). It helps to get rid of the loop that searches for the end of this array. Link: http://lkml.kernel.org/r/20170405202006.18234-1-aleksey.makarov@linaro.org Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Peter Hurley <peter@hurleysoftware.com> Cc: Jiri Slaby <jslaby@suse.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: "Nair, Jayachandran" <Jayachandran.Nair@cavium.com> Cc: linux-serial@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> Reported-by: Sudeep Holla <sudeep.holla@arm.com> Acked-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Signed-off-by: Petr Mladek <pmladek@suse.com>
Diffstat (limited to 'kernel/kexec_internal.h')
0 files changed, 0 insertions, 0 deletions