All of lore.kernel.org
 help / color / mirror / Atom feed
From: nerdopolis <bluescreen_avenger@verizon.net>
To: pmladek@suse.com, rostedt@goodmis.org, john.ogness@linutronix.de,
	senozhatsky@chromium.org, gregkh@linuxfoundation.org,
	tglx@linutronix.de, tony@atomide.com,
	linux-kernel@vger.kernel.org
Subject: VT-less kernels, and /dev/console on x86
Date: Sat, 17 Aug 2024 20:09:20 -0400	[thread overview]
Message-ID: <2669238.7s5MMGUR32@nerdopolis2> (raw)
In-Reply-To: 2669238.7s5MMGUR32.ref@nerdopolis2

Hi

I originally brought this up on linux-serial, but I think it makes more sense
that it's part of how printk console device selection works. Without VTs, while
most software is able to handle the situation, some userspace programs expect
/dev/console to still be responsive. Namely systemd. It calls isatty() against
/dev/console, and since /dev/console on VT-less systems currently defaults to
/dev/ttyS0, and when /dev/ttyS0 is disconnected, the ioctl's fail, and it
refuses to write log messages to it.

There doesn't seem to be a mailing list for printk, so I had to use
get_maintainer.pl. Hopefully this is correct


After some grepping and guessing and testing, and playing around Something like
diff --git a/drivers/tty/Kconfig b/drivers/tty/Kconfig
index a45d423ad10f..f94a4632aab0 100644
--- a/drivers/tty/Kconfig
+++ b/drivers/tty/Kconfig
@@ -384,9 +384,12 @@ config NULL_TTY
 
          In order to use this driver, you should redirect the console to this
          TTY, or boot the kernel with console=ttynull.
-
          If unsure, say N.
 
+config NULL_TTY_CONSOLE
+        bool "Supports /dev/ttynull as a console automatically"
+        depends on NULL_TTY && !VT_CONSOLE
+
 config VCC
        tristate "Sun Virtual Console Concentrator"
        depends on SUN_LDOMS
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index dddb15f48d59..c1554a789de8 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -3712,6 +3712,11 @@ void __init console_init(void)
        initcall_t call;
        initcall_entry_t *ce;
 
+#ifdef CONFIG_NULL_TTY_CONSOLE
+       if (!strstr(boot_command_line, "console="))
+               add_preferred_console("ttynull", 0, NULL);
+#endif
+
        /* Setup the default TTY line discipline. */
        n_tty_init();
 



seems to work, it conflicts with CONFIG_VT_CONSOLE since it is effectively
redundant, it is optional, so that it doesn't cause any changes to
configurations, that historically had CONFIG_VT_CONSOLE turned off in the past,
and for bootloader configs, it won't change any behavior if the kernel command
line has a console device specified

With ttynull as the console device, isatty() no longer fails on /dev/console,
systemd writes the log messages fine to /dev/console, and when Plymouth calls
TIOCCONS on its PTY, it is able to get the log messages.


Thanks



       reply	other threads:[~2024-08-18  0:19 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2669238.7s5MMGUR32.ref@nerdopolis2>
2024-08-18  0:09 ` nerdopolis [this message]
2024-08-18  1:07   ` VT-less kernels, and /dev/console on x86 Bagas Sanjaya
2024-08-18  2:31     ` nerdopolis
2024-08-18  5:12       ` Greg KH
2024-08-18 14:33         ` nerdopolis
2024-08-18  5:12   ` Greg KH
2024-08-18 12:33     ` nerdopolis
2024-08-18 14:30       ` nerdopolis
2024-08-19 15:09         ` Steven Rostedt
2024-08-19 15:50           ` nerdopolis
2024-08-20 13:29             ` Petr Mladek
2024-08-21 17:12               ` nerdopolis
2024-08-22 10:05                 ` Petr Mladek
2024-08-22 12:49                   ` nerdopolis
2024-08-27 12:53                     ` nerdopolis
2024-08-27 13:46                       ` Willy Tarreau
2024-09-12 16:48                         ` nerdopolis
2024-09-12 17:25                           ` Willy Tarreau
2024-09-12 18:46                             ` nerdopolis
2024-09-13  2:22                               ` nerdopolis
2024-09-17 12:54                               ` nerdopolis
2024-10-15 13:26                             ` nerdopolis
2024-09-12 12:29               ` nerdopolis
2024-09-12 13:27                 ` Petr Mladek
2024-10-09  9:24   ` Bernd Petrovitsch
2024-10-09 17:49     ` nerdopolis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2669238.7s5MMGUR32@nerdopolis2 \
    --to=bluescreen_avenger@verizon.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=senozhatsky@chromium.org \
    --cc=tglx@linutronix.de \
    --cc=tony@atomide.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.