Problem with the commit "console: don't prefer first registered if DT specifies stdout-path"

2 messages, 2 authors, 2016-11-05 · open the first message on its own page

Problem with the commit "console: don't prefer first registered if DT specifies stdout-path"

From: Christian Zigotzky <hidden>
Date: 2016-11-05 16:17:36

Hello Paul,

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.

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

Re: Problem with the commit "console: don't prefer first registered if DT specifies stdout-path"

From: Aaro Koskinen <aaro.koskinen@iki.fi>
Date: 2016-11-05 16:38:44

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
quoted hunk
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 ||
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help