Message ID | d71d79fa-ebe8-4f6f-f04f-ce3583b59019@xenosoft.de (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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@f0000000/NV| 00000010 44 41 2c 50 61 72 65 6e 74 40 31 30 2f 4e 56 44 |DA,Parent@10/NVD| 00000020 41 2c 44 69 73 70 6c 61 79 2d 41 40 30 00 |A,Display-A@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 ||
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 ||