[1/4] console: move console_init() out of tty_io.c

Message ID 20170412223717.20890-2-nicolas.pitre@linaro.org
State Accepted
Commit 0c688614dcce84dfdbb305fd1c399c06cecea745
Headers show
Series
  • assorted TTY code cleanups
Related show

Commit Message

Nicolas Pitre April 12, 2017, 10:37 p.m.
All the console driver handling code lives in printk.c.
Move console_init() there as well so console support can still be used
when the TTY code is configured out. No logical changes from this patch.

Signed-off-by: Nicolas Pitre <nico@linaro.org>

---
 drivers/tty/tty_io.c    | 24 ------------------------
 include/linux/console.h |  2 ++
 include/linux/tty.h     |  7 ++++---
 init/main.c             |  2 +-
 kernel/printk/printk.c  | 24 ++++++++++++++++++++++++
 5 files changed, 31 insertions(+), 28 deletions(-)

-- 
2.9.3

Comments

Andy Shevchenko May 3, 2017, 6:13 p.m. | #1
+Cc: Petr

On Thu, Apr 13, 2017 at 1:37 AM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:
> All the console driver handling code lives in printk.c.

> Move console_init() there as well so console support can still be used

> when the TTY code is configured out. No logical changes from this patch.

>


So, I missed cover letter.
The question is what is this all for and why it's not applied yet?

> Signed-off-by: Nicolas Pitre <nico@linaro.org>

> ---

>  drivers/tty/tty_io.c    | 24 ------------------------

>  include/linux/console.h |  2 ++

>  include/linux/tty.h     |  7 ++++---

>  init/main.c             |  2 +-

>  kernel/printk/printk.c  | 24 ++++++++++++++++++++++++

>  5 files changed, 31 insertions(+), 28 deletions(-)

>

> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c

> index e6d1a65108..2100295861 100644

> --- a/drivers/tty/tty_io.c

> +++ b/drivers/tty/tty_io.c

> @@ -3578,30 +3578,6 @@ void tty_default_fops(struct file_operations *fops)

>         *fops = tty_fops;

>  }

>

> -/*

> - * Initialize the console device. This is called *early*, so

> - * we can't necessarily depend on lots of kernel help here.

> - * Just do some early initializations, and do the complex setup

> - * later.

> - */

> -void __init console_init(void)

> -{

> -       initcall_t *call;

> -

> -       /* Setup the default TTY line discipline. */

> -       n_tty_init();

> -

> -       /*

> -        * set up the console device so that later boot sequences can

> -        * inform about problems etc..

> -        */

> -       call = __con_initcall_start;

> -       while (call < __con_initcall_end) {

> -               (*call)();

> -               call++;

> -       }

> -}

> -

>  static char *tty_devnode(struct device *dev, umode_t *mode)

>  {

>         if (!mode)

> diff --git a/include/linux/console.h b/include/linux/console.h

> index 5949d18555..b8920a031a 100644

> --- a/include/linux/console.h

> +++ b/include/linux/console.h

> @@ -212,4 +212,6 @@ extern bool vgacon_text_force(void);

>  static inline bool vgacon_text_force(void) { return false; }

>  #endif

>

> +extern void console_init(void);

> +

>  #endif /* _LINUX_CONSOLE_H */

> diff --git a/include/linux/tty.h b/include/linux/tty.h

> index 1017e904c0..f1106d7c73 100644

> --- a/include/linux/tty.h

> +++ b/include/linux/tty.h

> @@ -390,7 +390,6 @@ static inline bool tty_throttled(struct tty_struct *tty)

>  }

>

>  #ifdef CONFIG_TTY

> -extern void console_init(void);

>  extern void tty_kref_put(struct tty_struct *tty);

>  extern struct pid *tty_get_pgrp(struct tty_struct *tty);

>  extern void tty_vhangup_self(void);

> @@ -402,8 +401,6 @@ extern struct tty_struct *get_current_tty(void);

>  extern int __init tty_init(void);

>  extern const char *tty_name(const struct tty_struct *tty);

>  #else

> -static inline void console_init(void)

> -{ }

>  static inline void tty_kref_put(struct tty_struct *tty)

>  { }

>  static inline struct pid *tty_get_pgrp(struct tty_struct *tty)

> @@ -669,7 +666,11 @@ extern int tty_ldisc_receive_buf(struct tty_ldisc *ld, const unsigned char *p,

>

>  /* n_tty.c */

>  extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops);

> +#ifdef CONFIG_TTY

>  extern void __init n_tty_init(void);

> +#else

> +static inline void n_tty_init(void) { }

> +#endif

>

>  /* tty_audit.c */

>  #ifdef CONFIG_AUDIT

> diff --git a/init/main.c b/init/main.c

> index f9c9d99482..b9bd0edf21 100644

> --- a/init/main.c

> +++ b/init/main.c

> @@ -27,7 +27,7 @@

>  #include <linux/initrd.h>

>  #include <linux/bootmem.h>

>  #include <linux/acpi.h>

> -#include <linux/tty.h>

> +#include <linux/console.h>

>  #include <linux/nmi.h>

>  #include <linux/percpu.h>

>  #include <linux/kmod.h>

> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c

> index 2984fb0f02..3a09406526 100644

> --- a/kernel/printk/printk.c

> +++ b/kernel/printk/printk.c

> @@ -2611,6 +2611,30 @@ int unregister_console(struct console *console)

>  EXPORT_SYMBOL(unregister_console);

>

>  /*

> + * Initialize the console device. This is called *early*, so

> + * we can't necessarily depend on lots of kernel help here.

> + * Just do some early initializations, and do the complex setup

> + * later.

> + */

> +void __init console_init(void)

> +{

> +       initcall_t *call;

> +

> +       /* Setup the default TTY line discipline. */

> +       n_tty_init();

> +

> +       /*

> +        * set up the console device so that later boot sequences can

> +        * inform about problems etc..

> +        */

> +       call = __con_initcall_start;

> +       while (call < __con_initcall_end) {

> +               (*call)();

> +               call++;

> +       }

> +}

> +

> +/*

>   * Some boot consoles access data that is in the init section and which will

>   * be discarded after the initcalls have been run. To make sure that no code

>   * will access this data, unregister the boot consoles in a late initcall.

> --

> 2.9.3

>




-- 
With Best Regards,
Andy Shevchenko
Greg KH May 3, 2017, 7:06 p.m. | #2
On Wed, May 03, 2017 at 09:13:51PM +0300, Andy Shevchenko wrote:
> +Cc: Petr

> 

> On Thu, Apr 13, 2017 at 1:37 AM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:

> > All the console driver handling code lives in printk.c.

> > Move console_init() there as well so console support can still be used

> > when the TTY code is configured out. No logical changes from this patch.

> >

> 

> So, I missed cover letter.

> The question is what is this all for and why it's not applied yet?


It's in my tty tree to go to Linus for 4.12-rc1, why do you think it is
not applied?

thanks,

greg k-h
Andy Shevchenko May 3, 2017, 7:16 p.m. | #3
On Wed, May 3, 2017 at 10:06 PM, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
> On Wed, May 03, 2017 at 09:13:51PM +0300, Andy Shevchenko wrote:

>> +Cc: Petr

>>

>> On Thu, Apr 13, 2017 at 1:37 AM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:

>> > All the console driver handling code lives in printk.c.

>> > Move console_init() there as well so console support can still be used

>> > when the TTY code is configured out. No logical changes from this patch.

>> >

>>

>> So, I missed cover letter.

>> The question is what is this all for and why it's not applied yet?

>

> It's in my tty tree to go to Linus for 4.12-rc1,


Ah, good.

> why do you think it is

> not applied?


I have a tree based on top of most recent linux-next with
(potentially) conflicting patches. Besides that I just grepped the
code and found no changes in today's linux-next.

-- 
With Best Regards,
Andy Shevchenko
Greg KH May 3, 2017, 7:47 p.m. | #4
On Wed, May 03, 2017 at 10:16:00PM +0300, Andy Shevchenko wrote:
> On Wed, May 3, 2017 at 10:06 PM, Greg Kroah-Hartman

> <gregkh@linuxfoundation.org> wrote:

> > On Wed, May 03, 2017 at 09:13:51PM +0300, Andy Shevchenko wrote:

> >> +Cc: Petr

> >>

> >> On Thu, Apr 13, 2017 at 1:37 AM, Nicolas Pitre <nicolas.pitre@linaro.org> wrote:

> >> > All the console driver handling code lives in printk.c.

> >> > Move console_init() there as well so console support can still be used

> >> > when the TTY code is configured out. No logical changes from this patch.

> >> >

> >>

> >> So, I missed cover letter.

> >> The question is what is this all for and why it's not applied yet?

> >

> > It's in my tty tree to go to Linus for 4.12-rc1,

> 

> Ah, good.

> 

> > why do you think it is

> > not applied?

> 

> I have a tree based on top of most recent linux-next with

> (potentially) conflicting patches. Besides that I just grepped the

> code and found no changes in today's linux-next.


Ah crap!  I never pushed that tree out to the world, it was stuck on my
laptop...  Ugh, doing that now...

greg k-h

Patch

diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index e6d1a65108..2100295861 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -3578,30 +3578,6 @@  void tty_default_fops(struct file_operations *fops)
 	*fops = tty_fops;
 }
 
-/*
- * Initialize the console device. This is called *early*, so
- * we can't necessarily depend on lots of kernel help here.
- * Just do some early initializations, and do the complex setup
- * later.
- */
-void __init console_init(void)
-{
-	initcall_t *call;
-
-	/* Setup the default TTY line discipline. */
-	n_tty_init();
-
-	/*
-	 * set up the console device so that later boot sequences can
-	 * inform about problems etc..
-	 */
-	call = __con_initcall_start;
-	while (call < __con_initcall_end) {
-		(*call)();
-		call++;
-	}
-}
-
 static char *tty_devnode(struct device *dev, umode_t *mode)
 {
 	if (!mode)
diff --git a/include/linux/console.h b/include/linux/console.h
index 5949d18555..b8920a031a 100644
--- a/include/linux/console.h
+++ b/include/linux/console.h
@@ -212,4 +212,6 @@  extern bool vgacon_text_force(void);
 static inline bool vgacon_text_force(void) { return false; }
 #endif
 
+extern void console_init(void);
+
 #endif /* _LINUX_CONSOLE_H */
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 1017e904c0..f1106d7c73 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -390,7 +390,6 @@  static inline bool tty_throttled(struct tty_struct *tty)
 }
 
 #ifdef CONFIG_TTY
-extern void console_init(void);
 extern void tty_kref_put(struct tty_struct *tty);
 extern struct pid *tty_get_pgrp(struct tty_struct *tty);
 extern void tty_vhangup_self(void);
@@ -402,8 +401,6 @@  extern struct tty_struct *get_current_tty(void);
 extern int __init tty_init(void);
 extern const char *tty_name(const struct tty_struct *tty);
 #else
-static inline void console_init(void)
-{ }
 static inline void tty_kref_put(struct tty_struct *tty)
 { }
 static inline struct pid *tty_get_pgrp(struct tty_struct *tty)
@@ -669,7 +666,11 @@  extern int tty_ldisc_receive_buf(struct tty_ldisc *ld, const unsigned char *p,
 
 /* n_tty.c */
 extern void n_tty_inherit_ops(struct tty_ldisc_ops *ops);
+#ifdef CONFIG_TTY
 extern void __init n_tty_init(void);
+#else
+static inline void n_tty_init(void) { }
+#endif
 
 /* tty_audit.c */
 #ifdef CONFIG_AUDIT
diff --git a/init/main.c b/init/main.c
index f9c9d99482..b9bd0edf21 100644
--- a/init/main.c
+++ b/init/main.c
@@ -27,7 +27,7 @@ 
 #include <linux/initrd.h>
 #include <linux/bootmem.h>
 #include <linux/acpi.h>
-#include <linux/tty.h>
+#include <linux/console.h>
 #include <linux/nmi.h>
 #include <linux/percpu.h>
 #include <linux/kmod.h>
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 2984fb0f02..3a09406526 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2611,6 +2611,30 @@  int unregister_console(struct console *console)
 EXPORT_SYMBOL(unregister_console);
 
 /*
+ * Initialize the console device. This is called *early*, so
+ * we can't necessarily depend on lots of kernel help here.
+ * Just do some early initializations, and do the complex setup
+ * later.
+ */
+void __init console_init(void)
+{
+	initcall_t *call;
+
+	/* Setup the default TTY line discipline. */
+	n_tty_init();
+
+	/*
+	 * set up the console device so that later boot sequences can
+	 * inform about problems etc..
+	 */
+	call = __con_initcall_start;
+	while (call < __con_initcall_end) {
+		(*call)();
+		call++;
+	}
+}
+
+/*
  * Some boot consoles access data that is in the init section and which will
  * be discarded after the initcalls have been run. To make sure that no code
  * will access this data, unregister the boot consoles in a late initcall.