Problem with the commit "console: don't prefer first registered if DT specifies stdout-path"
Aaro Koskinen
aaro.koskinen at iki.fi
Sun Nov 6 03:32:06 AEDT 2016
On Sat, Nov 05, 2016 at 04:11:11PM +0100, Christian Zigotzky wrote:
> After your commit "console: don't prefer first registered if DT specifies
> stdout-path" [1] we couldn't see any kernel boot messages anymore. I
> restored the old code and after that I was able to see the messages again.
>
> System: Nemo board with P.A. Semi PA6T PowerPC CPU
>
> I understand your idea of this patch but unfortunately it doesn't work with
> our system. There isn't a possibility to modify the DT.
I faced the same issue today with PowerBook G4.
/sys/firmware/devicetree/base/chosen # hexdump -C linux,stdout-path
00000000 2f 70 63 69 40 66 30 30 30 30 30 30 30 2f 4e 56 |/pci at f0000000/NV|
00000010 44 41 2c 50 61 72 65 6e 74 40 31 30 2f 4e 56 44 |DA,Parent at 10/NVD|
00000020 41 2c 44 69 73 70 6c 61 79 2d 41 40 30 00 |A,Display-A at 0.|
0000002e
# dmesg|grep -i console
[ 0.000000] bootconsole [udbg0] enabled
[ 0.000774] Console: colour dummy device 80x25
[ 2.288125] Console: switching to colour frame buffer device 128x48
[ 4.318611] Warning: unable to open an initial console.
A workaround seems to be explicitly pass console=tty0 on the kernel
command line...
A.
> We have created a patch for removing your commit but I hope you have a
> better idea.
>
> Cheers,
> Christian
>
> [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=05fd007e46296afb24d15c7d589d535e5a5b9d5c
> diff -rupN a/drivers/of/base.c b/drivers/of/base.c
> --- a/drivers/of/base.c 2016-10-29 22:52:02.000000000 +0200
> +++ b/drivers/of/base.c 2016-11-04 11:59:07.049568281 +0100
> @@ -2077,8 +2077,6 @@ void of_alias_scan(void * (*dt_alloc)(u6
> name = of_get_property(of_aliases, "stdout", NULL);
> if (name)
> of_stdout = of_find_node_opts_by_path(name, &of_stdout_options);
> - if (of_stdout)
> - console_set_by_of();
> }
>
> if (!of_aliases)
> diff -rupN a/include/linux/console.h b/include/linux/console.h
> --- a/include/linux/console.h 2016-10-29 22:52:02.000000000 +0200
> +++ b/include/linux/console.h 2016-11-04 12:00:22.808701652 +0100
> @@ -173,12 +173,6 @@ static inline void console_sysfs_notify(
> #endif
> extern bool console_suspend_enabled;
>
> -#ifdef CONFIG_OF
> -extern void console_set_by_of(void);
> -#else
> -static inline void console_set_by_of(void) {}
> -#endif
> -
> /* Suspend and resume console messages over PM events */
> extern void suspend_console(void);
> extern void resume_console(void);
> diff -rupN a/kernel/printk/printk.c b/kernel/printk/printk.c
> --- a/kernel/printk/printk.c 2016-10-29 22:52:02.000000000 +0200
> +++ b/kernel/printk/printk.c 2016-11-04 12:04:36.083094450 +0100
> @@ -253,17 +253,6 @@ static int preferred_console = -1;
> int console_set_on_cmdline;
> EXPORT_SYMBOL(console_set_on_cmdline);
>
> -#ifdef CONFIG_OF
> -static bool of_specified_console;
> -
> -void console_set_by_of(void)
> -{
> - of_specified_console = true;
> -}
> -#else
> -# define of_specified_console false
> -#endif
> -
> /* Flag: console code may call schedule() */
> static int console_may_schedule;
>
> @@ -2657,7 +2646,7 @@ void register_console(struct console *ne
> * didn't select a console we take the first one
> * that registers here.
> */
> - if (preferred_console < 0 && !of_specified_console) {
> + if (preferred_console < 0) {
> if (newcon->index < 0)
> newcon->index = 0;
> if (newcon->setup == NULL ||
More information about the Linuxppc-dev
mailing list