Message ID | 20170825131451.15944-1-Eugeniy.Paltsev@synopsys.com |
---|---|
State | New |
Headers | show |
On Fri, 25 Aug 2017 16:14:51 +0300 Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> wrote: > In the current implementation we take the first console that > registers if we didn't select one. > > But if we specify console via "stdout-path" property in device tree > we don't want first console that registers here to be selected. > Otherwise we may choose wrong console - for example if some console > is registered earlier than console is pointed in "stdout-path" > property because console pointed in "stdout-path" property can be add as > preferred quite late - when it's driver is probed. > > Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> > --- > kernel/printk/printk.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 512f7c2..23262c1 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -26,6 +26,7 @@ > #include <linux/nmi.h> > #include <linux/module.h> > #include <linux/moduleparam.h> > +#include <linux/of.h> > #include <linux/delay.h> > #include <linux/smp.h> > #include <linux/security.h> > @@ -2431,6 +2432,16 @@ void register_console(struct console *newcon) > if (!has_preferred || bcon || !console_drivers) > has_preferred = preferred_console >= 0; > > + > + /* > + * If we specify console via "stdout-path" property in device tree > + * we don't want first console that registers here to be selected. > + */ > +#ifdef CONFIG_OF > + if (of_stdout) > + has_preferred = true; > +#endif To remove the #ifdef from the code, could the of.h move #ifdef CONFIG_OF Above the extern declarations of of_stdout and friends, and then have: #else /* !CONFIG_OF */ #define of_stdout NULL #endif Then we could just have: if (of_stdout) has_preferred = true; without the ifdefs. -- Steve > + > /* > * See if we want to use this console driver. If we > * didn't select a console we take the first one
On (08/25/17 16:14), Eugeniy Paltsev wrote: > In the current implementation we take the first console that > registers if we didn't select one. > > But if we specify console via "stdout-path" property in device tree > we don't want first console that registers here to be selected. > Otherwise we may choose wrong console - for example if some console > is registered earlier than console is pointed in "stdout-path" > property because console pointed in "stdout-path" property can be add as > preferred quite late - when it's driver is probed. > > Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> hm... this is not the first time we see DT and stdout-path. and so far it was pretty painful :) e.g. commits c6c7d83b9c9e, 05fd007e4629. -ss > --- > kernel/printk/printk.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 512f7c2..23262c1 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -26,6 +26,7 @@ > #include <linux/nmi.h> > #include <linux/module.h> > #include <linux/moduleparam.h> > +#include <linux/of.h> > #include <linux/delay.h> > #include <linux/smp.h> > #include <linux/security.h> > @@ -2431,6 +2432,16 @@ void register_console(struct console *newcon) > if (!has_preferred || bcon || !console_drivers) > has_preferred = preferred_console >= 0; > > + > + /* > + * If we specify console via "stdout-path" property in device tree > + * we don't want first console that registers here to be selected. > + */ > +#ifdef CONFIG_OF > + if (of_stdout) > + has_preferred = true; > +#endif > + > /* > * See if we want to use this console driver. If we > * didn't select a console we take the first one > -- > 2.9.3 >
On Sat, 2017-08-26 at 02:44 +0900, Sergey Senozhatsky wrote: > On (08/25/17 16:14), Eugeniy Paltsev wrote: > > In the current implementation we take the first console that > > registers if we didn't select one. > > > > But if we specify console via "stdout-path" property in device tree > > we don't want first console that registers here to be selected. > > Otherwise we may choose wrong console - for example if some console > > is registered earlier than console is pointed in "stdout-path" > > property because console pointed in "stdout-path" property can be > > add as > > preferred quite late - when it's driver is probed. > > > > Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> > > hm... this is not the first time we see DT and stdout-path. > and so far it was pretty painful :) e.g. commits c6c7d83b9c9e, > 05fd007e4629. > > -ss Hm... looks like I had to update my patch to keep existing tty0 behavior. Before this patch tty0 was registered even if it was specified neither in "bootargs" nor in "stdout-path". So I should retain this behavior as a lot of ARM boards (and some powerpc) rely on it. > > > --- > > kernel/printk/printk.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > > index 512f7c2..23262c1 100644 > > --- a/kernel/printk/printk.c > > +++ b/kernel/printk/printk.c > > @@ -26,6 +26,7 @@ > > #include <linux/nmi.h> > > #include <linux/module.h> > > #include <linux/moduleparam.h> > > +#include <linux/of.h> > > #include <linux/delay.h> > > #include <linux/smp.h> > > #include <linux/security.h> > > @@ -2431,6 +2432,16 @@ void register_console(struct console > > *newcon) > > if (!has_preferred || bcon || !console_drivers) > > has_preferred = preferred_console >= 0; > > > > + > > + /* > > + * If we specify console via "stdout-path" property in > > device tree > > + * we don't want first console that registers here to be > > selected. > > + */ > > +#ifdef CONFIG_OF > > + if (of_stdout) > > + has_preferred = true; > > +#endif > > + > > /* > > * See if we want to use this console driver. If we > > * didn't select a console we take the first one > > -- > > 2.9.3 > > -- Eugeniy Paltsev
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 512f7c2..23262c1 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -26,6 +26,7 @@ #include <linux/nmi.h> #include <linux/module.h> #include <linux/moduleparam.h> +#include <linux/of.h> #include <linux/delay.h> #include <linux/smp.h> #include <linux/security.h> @@ -2431,6 +2432,16 @@ void register_console(struct console *newcon) if (!has_preferred || bcon || !console_drivers) has_preferred = preferred_console >= 0; + + /* + * If we specify console via "stdout-path" property in device tree + * we don't want first console that registers here to be selected. + */ +#ifdef CONFIG_OF + if (of_stdout) + has_preferred = true; +#endif + /* * See if we want to use this console driver. If we * didn't select a console we take the first one
In the current implementation we take the first console that registers if we didn't select one. But if we specify console via "stdout-path" property in device tree we don't want first console that registers here to be selected. Otherwise we may choose wrong console - for example if some console is registered earlier than console is pointed in "stdout-path" property because console pointed in "stdout-path" property can be add as preferred quite late - when it's driver is probed. Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> --- kernel/printk/printk.c | 11 +++++++++++ 1 file changed, 11 insertions(+)