* [PATCH v2 0/2] Optionally allow ttynull to be selected as a default console
@ 2025-02-17 4:07 adamsimonelli
2025-02-17 4:07 ` [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device adamsimonelli
2025-02-17 4:07 ` [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner adamsimonelli
0 siblings, 2 replies; 7+ messages in thread
From: adamsimonelli @ 2025-02-17 4:07 UTC (permalink / raw)
To: linux-serial, linux-kernel, Jiri Slaby, Greg Kroah-Hartman; +Cc: Adam Simonelli
From: Adam Simonelli <adamsimonelli@gmail.com>
When switching to a CONFIG_VT=n world, at least on x86 systems,
/dev/console becomes /dev/ttyS0. This can cause some undesired effects.
/dev/console's behavior is now tied to the physical /dev/ttyS0, which when
disconnected can cause isatty() to fail when /dev/ttyS0 is disconnected,
and users who upgrade to a theoretical vt-less kernel from their
distribution who have a device such as a science instrument connected to
their /dev/ttyS0 port will suddenly see it receive kernel log messages.
When the new CONFIG_NULL_TTY_CONSOLE option is turned on, this will allow
the ttynull device to be leveraged as the default console. Distributions
that had CONFIG_VT turned on before will be able to leverage this option
to where /dev/console is still backed by a psuedo device, avoiding these
issues, without needing to enable the entire VT subsystem.
v2:
rebase
Adam Simonelli (2):
ttynull: Add an option to allow ttynull to be used as a console device
tty: Change order of ttynull to be loaded sooner.
drivers/tty/Kconfig | 18 +++++++++++++++++-
drivers/tty/Makefile | 3 ++-
drivers/tty/ttynull.c | 16 +++++++++++++++-
3 files changed, 34 insertions(+), 3 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device 2025-02-17 4:07 [PATCH v2 0/2] Optionally allow ttynull to be selected as a default console adamsimonelli @ 2025-02-17 4:07 ` adamsimonelli 2025-02-19 14:00 ` Greg Kroah-Hartman 2025-02-17 4:07 ` [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner adamsimonelli 1 sibling, 1 reply; 7+ messages in thread From: adamsimonelli @ 2025-02-17 4:07 UTC (permalink / raw) To: linux-serial, linux-kernel, Jiri Slaby, Greg Kroah-Hartman; +Cc: Adam Simonelli From: Adam Simonelli <adamsimonelli@gmail.com> Add a config option CONFIG_NULL_TTY_CONSOLE that will have ttynull be initialized by console_initcall() and selected as a possible console device. Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> --- drivers/tty/Kconfig | 18 +++++++++++++++++- drivers/tty/ttynull.c | 16 +++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig index 63a494d36a1f..afe4e7722d4c 100644 --- a/drivers/tty/Kconfig +++ b/drivers/tty/Kconfig @@ -383,7 +383,23 @@ config NULL_TTY available or desired. In order to use this driver, you should redirect the console to this - TTY, or boot the kernel with console=ttynull. + TTY, boot the kernel with console=ttynull, or enable + CONFIG_NULL_TTY_CONSOLE. + + If unsure, say N. + +config NULL_TTY_CONSOLE + bool "Supports /dev/ttynull as a console automatically" + depends on NULL_TTY=y && !VT_CONSOLE + help + Say Y here if you want the NULL TTY to be used as a /dev/console + device. + + This is useful for userspace applications that expect a working + console device, without changing the kernel boot options, such as a + distribuition or environment that historically had CONFIG_VT_CONSOLE + enabled, and have now disabled it, but still need /dev/console to be + working for userspace applications. If unsure, say N. diff --git a/drivers/tty/ttynull.c b/drivers/tty/ttynull.c index 6b2f7208b564..8ba629ae426b 100644 --- a/drivers/tty/ttynull.c +++ b/drivers/tty/ttynull.c @@ -57,6 +57,10 @@ static struct tty_driver *ttynull_device(struct console *c, int *index) static struct console ttynull_console = { .name = "ttynull", .device = ttynull_device, +#ifdef CONFIG_NULL_TTY_CONSOLE + .index = -1, + .flags = CON_PRINTBUFFER, +#endif }; static int __init ttynull_init(void) @@ -90,10 +94,20 @@ static int __init ttynull_init(void) } ttynull_driver = driver; - register_console(&ttynull_console); + if (!console_is_registered(&ttynull_console)) + register_console(&ttynull_console); + + return 0; +} +#ifdef CONFIG_NULL_TTY_CONSOLE +static int __init ttynull_register(void) +{ + register_console(&ttynull_console); return 0; } +console_initcall(ttynull_register); +#endif static void __exit ttynull_exit(void) { -- 2.45.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device 2025-02-17 4:07 ` [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device adamsimonelli @ 2025-02-19 14:00 ` Greg Kroah-Hartman 2025-02-23 5:08 ` Adam Simonelli 0 siblings, 1 reply; 7+ messages in thread From: Greg Kroah-Hartman @ 2025-02-19 14:00 UTC (permalink / raw) To: adamsimonelli; +Cc: linux-serial, linux-kernel, Jiri Slaby On Sun, Feb 16, 2025 at 11:07:47PM -0500, adamsimonelli@gmail.com wrote: > From: Adam Simonelli <adamsimonelli@gmail.com> > > Add a config option CONFIG_NULL_TTY_CONSOLE that will have ttynull be > initialized by console_initcall() and selected as a possible console > device. > > Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> > --- > drivers/tty/Kconfig | 18 +++++++++++++++++- > drivers/tty/ttynull.c | 16 +++++++++++++++- > 2 files changed, 32 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig > index 63a494d36a1f..afe4e7722d4c 100644 > --- a/drivers/tty/Kconfig > +++ b/drivers/tty/Kconfig > @@ -383,7 +383,23 @@ config NULL_TTY > available or desired. > > In order to use this driver, you should redirect the console to this > - TTY, or boot the kernel with console=ttynull. > + TTY, boot the kernel with console=ttynull, or enable > + CONFIG_NULL_TTY_CONSOLE. > + > + If unsure, say N. > + > +config NULL_TTY_CONSOLE > + bool "Supports /dev/ttynull as a console automatically" > + depends on NULL_TTY=y && !VT_CONSOLE > + help > + Say Y here if you want the NULL TTY to be used as a /dev/console > + device. > + > + This is useful for userspace applications that expect a working > + console device, without changing the kernel boot options, such as a > + distribuition or environment that historically had CONFIG_VT_CONSOLE > + enabled, and have now disabled it, but still need /dev/console to be > + working for userspace applications. > > If unsure, say N. > > diff --git a/drivers/tty/ttynull.c b/drivers/tty/ttynull.c > index 6b2f7208b564..8ba629ae426b 100644 > --- a/drivers/tty/ttynull.c > +++ b/drivers/tty/ttynull.c > @@ -57,6 +57,10 @@ static struct tty_driver *ttynull_device(struct console *c, int *index) > static struct console ttynull_console = { > .name = "ttynull", > .device = ttynull_device, > +#ifdef CONFIG_NULL_TTY_CONSOLE > + .index = -1, > + .flags = CON_PRINTBUFFER, > +#endif There's no way to do this without #ifdef in the .c files? > }; > > static int __init ttynull_init(void) > @@ -90,10 +94,20 @@ static int __init ttynull_init(void) > } > > ttynull_driver = driver; > - register_console(&ttynull_console); > + if (!console_is_registered(&ttynull_console)) > + register_console(&ttynull_console); > + Why do you register this twice? > + return 0; > +} > > +#ifdef CONFIG_NULL_TTY_CONSOLE > +static int __init ttynull_register(void) > +{ > + register_console(&ttynull_console); Here, why is this registered again? You should only have to do this once, and not need to check before trying again, right? thanks, greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device 2025-02-19 14:00 ` Greg Kroah-Hartman @ 2025-02-23 5:08 ` Adam Simonelli 0 siblings, 0 replies; 7+ messages in thread From: Adam Simonelli @ 2025-02-23 5:08 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-serial, linux-kernel, Jiri Slaby On Wednesday, February 19, 2025 9:00:07 AM EST Greg Kroah-Hartman wrote: > On Sun, Feb 16, 2025 at 11:07:47PM -0500, adamsimonelli@gmail.com wrote: > > From: Adam Simonelli <adamsimonelli@gmail.com> > > > > Add a config option CONFIG_NULL_TTY_CONSOLE that will have ttynull be > > initialized by console_initcall() and selected as a possible console > > device. > > > > Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> > > --- > > drivers/tty/Kconfig | 18 +++++++++++++++++- > > drivers/tty/ttynull.c | 16 +++++++++++++++- > > 2 files changed, 32 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig > > index 63a494d36a1f..afe4e7722d4c 100644 > > --- a/drivers/tty/Kconfig > > +++ b/drivers/tty/Kconfig > > @@ -383,7 +383,23 @@ config NULL_TTY > > available or desired. > > > > In order to use this driver, you should redirect the console to this > > - TTY, or boot the kernel with console=ttynull. > > + TTY, boot the kernel with console=ttynull, or enable > > + CONFIG_NULL_TTY_CONSOLE. > > + > > + If unsure, say N. > > + > > +config NULL_TTY_CONSOLE > > + bool "Supports /dev/ttynull as a console automatically" > > + depends on NULL_TTY=y && !VT_CONSOLE > > + help > > + Say Y here if you want the NULL TTY to be used as a /dev/console > > + device. > > + > > + This is useful for userspace applications that expect a working > > + console device, without changing the kernel boot options, such as a > > + distribuition or environment that historically had CONFIG_VT_CONSOLE > > + enabled, and have now disabled it, but still need /dev/console to be > > + working for userspace applications. > > > > If unsure, say N. > > > > diff --git a/drivers/tty/ttynull.c b/drivers/tty/ttynull.c > > index 6b2f7208b564..8ba629ae426b 100644 > > --- a/drivers/tty/ttynull.c > > +++ b/drivers/tty/ttynull.c > > @@ -57,6 +57,10 @@ static struct tty_driver *ttynull_device(struct console *c, int *index) > > static struct console ttynull_console = { > > .name = "ttynull", > > .device = ttynull_device, > > +#ifdef CONFIG_NULL_TTY_CONSOLE > > + .index = -1, > > + .flags = CON_PRINTBUFFER, > > +#endif > > There's no way to do this without #ifdef in the .c files? > > > }; > > Maybe IS_ENABLED() is better? > > static int __init ttynull_init(void) > > @@ -90,10 +94,20 @@ static int __init ttynull_init(void) > > } > > > > ttynull_driver = driver; > > - register_console(&ttynull_console); > > + if (!console_is_registered(&ttynull_console)) > > + register_console(&ttynull_console); > > + > > Why do you register this twice? I thought I had to add that in the console_initcall function because other drivers seem to have that. I want it to still work when it is just CONFIG_NULL_TTY without CONFIG_NULL_TTY_CONSOLE, so I will guard both with console_is_registered > > > + return 0; > > +} > > > > +#ifdef CONFIG_NULL_TTY_CONSOLE > > +static int __init ttynull_register(void) > > +{ > > + register_console(&ttynull_console); > > Here, why is this registered again? > > You should only have to do this once, and not need to check before > trying again, right? > > thanks, > OK, I will guard both. > greg k-h > ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner. 2025-02-17 4:07 [PATCH v2 0/2] Optionally allow ttynull to be selected as a default console adamsimonelli 2025-02-17 4:07 ` [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device adamsimonelli @ 2025-02-17 4:07 ` adamsimonelli 2025-02-19 14:03 ` Greg Kroah-Hartman 1 sibling, 1 reply; 7+ messages in thread From: adamsimonelli @ 2025-02-17 4:07 UTC (permalink / raw) To: linux-serial, linux-kernel, Jiri Slaby, Greg Kroah-Hartman; +Cc: Adam Simonelli From: Adam Simonelli <adamsimonelli@gmail.com> If CONFIG_NULL_TTY_CONSOLE is enabled, and CONFIG_VT is disabled, ttynull will become the default primary console device, based on the load order. Users and distributions that are migrating away from CONFIG_VT will benefit from this as /dev/console would not suddenly become /dev/ttyS0 which could otherwise cause some user space behavior changes, namely the TCGETS ioctl failing, which causes libc's isatty() to incorrectly return false when /dev/ttyS0 is disabled, and will prevent a device that is connected to a user's /dev/ttyS0 to suddenly start getting kernel log messages. Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> --- drivers/tty/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/tty/Makefile b/drivers/tty/Makefile index 07aca5184a55..03bb47e11e1c 100644 --- a/drivers/tty/Makefile +++ b/drivers/tty/Makefile @@ -11,6 +11,8 @@ obj-$(CONFIG_N_HDLC) += n_hdlc.o obj-$(CONFIG_N_GSM) += n_gsm.o obj-y += vt/ +obj-$(CONFIG_NULL_TTY) += ttynull.o + obj-$(CONFIG_HVC_DRIVER) += hvc/ obj-y += serial/ obj-$(CONFIG_SERIAL_DEV_BUS) += serdev/ @@ -20,7 +22,6 @@ obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o obj-$(CONFIG_MOXA_INTELLIO) += moxa.o obj-$(CONFIG_MOXA_SMARTIO) += mxser.o obj-$(CONFIG_NOZOMI) += nozomi.o -obj-$(CONFIG_NULL_TTY) += ttynull.o obj-$(CONFIG_SYNCLINK_GT) += synclink_gt.o obj-$(CONFIG_PPC_EPAPR_HV_BYTECHAN) += ehv_bytechan.o obj-$(CONFIG_GOLDFISH_TTY) += goldfish.o -- 2.45.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner. 2025-02-17 4:07 ` [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner adamsimonelli @ 2025-02-19 14:03 ` Greg Kroah-Hartman 2025-02-23 4:56 ` Adam Simonelli 0 siblings, 1 reply; 7+ messages in thread From: Greg Kroah-Hartman @ 2025-02-19 14:03 UTC (permalink / raw) To: adamsimonelli; +Cc: linux-serial, linux-kernel, Jiri Slaby On Sun, Feb 16, 2025 at 11:07:48PM -0500, adamsimonelli@gmail.com wrote: > From: Adam Simonelli <adamsimonelli@gmail.com> > > If CONFIG_NULL_TTY_CONSOLE is enabled, and CONFIG_VT is disabled, ttynull > will become the default primary console device, based on the load order. You mean "link order" right? > Users and distributions that are migrating away from CONFIG_VT will > benefit from this as /dev/console would not suddenly become /dev/ttyS0 > which could otherwise cause some user space behavior changes, namely the > TCGETS ioctl failing, which causes libc's isatty() to incorrectly return > false when /dev/ttyS0 is disabled, and will prevent a device that is > connected to a user's /dev/ttyS0 to suddenly start getting kernel log > messages. I'm sorry, but I can not parse that very long sentance. If CONFIG_VT is not enabled, this isn't going to change anything with ttynull, it will just happen to have this console loaded before all others, right? Which implies that this might break existing systems when this loads before the expected platform-specific drivers. Was this tested on those systems? > > Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> > --- > drivers/tty/Makefile | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/Makefile b/drivers/tty/Makefile > index 07aca5184a55..03bb47e11e1c 100644 > --- a/drivers/tty/Makefile > +++ b/drivers/tty/Makefile > @@ -11,6 +11,8 @@ obj-$(CONFIG_N_HDLC) += n_hdlc.o > obj-$(CONFIG_N_GSM) += n_gsm.o > > obj-y += vt/ > +obj-$(CONFIG_NULL_TTY) += ttynull.o If you are going to rely on link order here, and HAVE to have this above all other consoles, please document it as such so that people have a hint as to why you are doing this in the file so it dosn't change again. thanks, greg k-h ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner. 2025-02-19 14:03 ` Greg Kroah-Hartman @ 2025-02-23 4:56 ` Adam Simonelli 0 siblings, 0 replies; 7+ messages in thread From: Adam Simonelli @ 2025-02-23 4:56 UTC (permalink / raw) To: Greg Kroah-Hartman; +Cc: linux-serial, linux-kernel, Jiri Slaby On Wednesday, February 19, 2025 9:03:08 AM EST Greg Kroah-Hartman wrote: > On Sun, Feb 16, 2025 at 11:07:48PM -0500, adamsimonelli@gmail.com wrote: > > From: Adam Simonelli <adamsimonelli@gmail.com> > > > > If CONFIG_NULL_TTY_CONSOLE is enabled, and CONFIG_VT is disabled, ttynull > > will become the default primary console device, based on the load order. > > You mean "link order" right? Yeah, I'm sorry, I will change that. > > > Users and distributions that are migrating away from CONFIG_VT will > > benefit from this as /dev/console would not suddenly become /dev/ttyS0 > > which could otherwise cause some user space behavior changes, namely the > > TCGETS ioctl failing, which causes libc's isatty() to incorrectly return > > false when /dev/ttyS0 is disabled, and will prevent a device that is > > connected to a user's /dev/ttyS0 to suddenly start getting kernel log > > messages. > > I'm sorry, but I can not parse that very long sentance. If CONFIG_VT is > not enabled, this isn't going to change anything with ttynull, it will > just happen to have this console loaded before all others, right? > > Which implies that this might break existing systems when this loads > before the expected platform-specific drivers. Was this tested on those > systems? > OK, next version of the patch, I think the commit message should be more more clear I hope. > > > > Signed-off-by: Adam Simonelli <adamsimonelli@gmail.com> > > --- > > drivers/tty/Makefile | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/tty/Makefile b/drivers/tty/Makefile > > index 07aca5184a55..03bb47e11e1c 100644 > > --- a/drivers/tty/Makefile > > +++ b/drivers/tty/Makefile > > @@ -11,6 +11,8 @@ obj-$(CONFIG_N_HDLC) += n_hdlc.o > > obj-$(CONFIG_N_GSM) += n_gsm.o > > > > obj-y += vt/ > > +obj-$(CONFIG_NULL_TTY) += ttynull.o > > If you are going to rely on link order here, and HAVE to have this above > all other consoles, please document it as such so that people have a > hint as to why you are doing this in the file so it dosn't change again. > > thanks, > OK. I will add some comments > greg k-h > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-02-23 5:08 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-02-17 4:07 [PATCH v2 0/2] Optionally allow ttynull to be selected as a default console adamsimonelli 2025-02-17 4:07 ` [PATCH v2 1/2] ttynull: Add an option to allow ttynull to be used as a console device adamsimonelli 2025-02-19 14:00 ` Greg Kroah-Hartman 2025-02-23 5:08 ` Adam Simonelli 2025-02-17 4:07 ` [PATCH v2 2/2] tty: Change order of ttynull to be loaded sooner adamsimonelli 2025-02-19 14:03 ` Greg Kroah-Hartman 2025-02-23 4:56 ` Adam Simonelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox