* [PATCH printk v6 00/17] add threaded printing + the rest
@ 2024-09-04 12:05 John Ogness
2024-09-04 12:05 ` [PATCH printk v6 12/17] proc: consoles: Add notation to c_start/c_stop John Ogness
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: John Ogness @ 2024-09-04 12:05 UTC (permalink / raw)
To: Petr Mladek
Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
Greg Kroah-Hartman, linux-fsdevel, Jiri Slaby, linux-serial
Hi,
This is v6 of a series to implement threaded console printing
as well as some other minor pieces (such as proc and sysfs
recognition of nbcon consoles). v5 is here [0].
For information about the motivation of the nbcon consoles,
please read the cover letter of the original v1 [1].
This series provides the remaining pieces of the printk
rework. All other components are either already mainline or are
currently in linux-next. In particular this series does:
- Implement dedicated printing threads per nbcon console.
- Implement forced threading of legacy consoles for PREEMPT_RT.
- Implement nbcon support for proc and sysfs console-related
files.
- Provide a new helper function nbcon_reacquire_nobuf() to
allow nbcon console drivers to reacquire ownership.
Note that this series does *not* provide an nbcon console
driver. That will come in a follow-up series.
Here are the changes since v5:
- In nbcon_kthreads_wake(), skip !CON_NBCON consoles.
- In console_flush_all(), also skip nbcon consoles if
ft.nbcon_atomic == true and improve comments explaining
why.
- In legacy_kthread_should_wakeup(), also skip nbcon consoles
if ft.nbcon_atomic == true and improve comments explaining
why.
John Ogness
[0] https://lore.kernel.org/lkml/20240830152916.10136-1-john.ogness@linutronix.de
[1] https://lore.kernel.org/lkml/20230302195618.156940-1-john.ogness@linutronix.de
John Ogness (16):
printk: nbcon: Add function for printers to reacquire ownership
printk: Fail pr_flush() if before SYSTEM_SCHEDULING
printk: Flush console on unregister_console()
printk: nbcon: Add context to usable() and emit()
printk: nbcon: Init @nbcon_seq to highest possible
printk: nbcon: Relocate nbcon_atomic_emit_one()
printk: nbcon: Use thread callback if in task context for legacy
printk: nbcon: Rely on kthreads for normal operation
printk: Provide helper for message prepending
printk: nbcon: Show replay message on takeover
proc: consoles: Add notation to c_start/c_stop
proc: Add nbcon support for /proc/consoles
tty: sysfs: Add nbcon support for 'active'
printk: Implement legacy printer kthread for PREEMPT_RT
printk: nbcon: Assign nice -20 for printing threads
printk: Avoid false positive lockdep report for legacy printing
Thomas Gleixner (1):
printk: nbcon: Introduce printer kthreads
drivers/tty/tty_io.c | 2 +-
fs/proc/consoles.c | 7 +-
include/linux/console.h | 48 +++
kernel/printk/internal.h | 82 ++++-
kernel/printk/nbcon.c | 507 +++++++++++++++++++++++++-----
kernel/printk/printk.c | 467 ++++++++++++++++++++++++---
kernel/printk/printk_ringbuffer.h | 2 +
kernel/printk/printk_safe.c | 4 +-
8 files changed, 986 insertions(+), 133 deletions(-)
base-commit: d33d5e683b0d3b4f5fc6a49ce17583f8ca663944
--
2.39.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH printk v6 12/17] proc: consoles: Add notation to c_start/c_stop
2024-09-04 12:05 [PATCH printk v6 00/17] add threaded printing + the rest John Ogness
@ 2024-09-04 12:05 ` John Ogness
2024-09-04 12:05 ` [PATCH printk v6 13/17] proc: Add nbcon support for /proc/consoles John Ogness
2024-09-04 14:30 ` [PATCH printk v6 00/17] add threaded printing + the rest Petr Mladek
2 siblings, 0 replies; 5+ messages in thread
From: John Ogness @ 2024-09-04 12:05 UTC (permalink / raw)
To: Petr Mladek
Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
linux-fsdevel
fs/proc/consoles.c:78:13: warning: context imbalance in 'c_start'
- wrong count at exit
fs/proc/consoles.c:104:13: warning: context imbalance in 'c_stop'
- unexpected unlock
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
---
fs/proc/consoles.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/proc/consoles.c b/fs/proc/consoles.c
index e0758fe7936d..7036fdfa0bec 100644
--- a/fs/proc/consoles.c
+++ b/fs/proc/consoles.c
@@ -68,6 +68,7 @@ static int show_console_dev(struct seq_file *m, void *v)
}
static void *c_start(struct seq_file *m, loff_t *pos)
+ __acquires(&console_mutex)
{
struct console *con;
loff_t off = 0;
@@ -94,6 +95,7 @@ static void *c_next(struct seq_file *m, void *v, loff_t *pos)
}
static void c_stop(struct seq_file *m, void *v)
+ __releases(&console_mutex)
{
console_list_unlock();
}
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH printk v6 13/17] proc: Add nbcon support for /proc/consoles
2024-09-04 12:05 [PATCH printk v6 00/17] add threaded printing + the rest John Ogness
2024-09-04 12:05 ` [PATCH printk v6 12/17] proc: consoles: Add notation to c_start/c_stop John Ogness
@ 2024-09-04 12:05 ` John Ogness
2024-09-04 14:30 ` [PATCH printk v6 00/17] add threaded printing + the rest Petr Mladek
2 siblings, 0 replies; 5+ messages in thread
From: John Ogness @ 2024-09-04 12:05 UTC (permalink / raw)
To: Petr Mladek
Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
linux-fsdevel
Update /proc/consoles output to show 'W' if an nbcon console is
registered. Since the write_thread() callback is mandatory, it
enough just to check if it is an nbcon console.
Also update /proc/consoles output to show 'N' if it is an
nbcon console.
Signed-off-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Petr Mladek <pmladek@suse.com>
---
fs/proc/consoles.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/proc/consoles.c b/fs/proc/consoles.c
index 7036fdfa0bec..b7cab1ad990d 100644
--- a/fs/proc/consoles.c
+++ b/fs/proc/consoles.c
@@ -21,6 +21,7 @@ static int show_console_dev(struct seq_file *m, void *v)
{ CON_ENABLED, 'E' },
{ CON_CONSDEV, 'C' },
{ CON_BOOT, 'B' },
+ { CON_NBCON, 'N' },
{ CON_PRINTBUFFER, 'p' },
{ CON_BRL, 'b' },
{ CON_ANYTIME, 'a' },
@@ -58,8 +59,8 @@ static int show_console_dev(struct seq_file *m, void *v)
seq_printf(m, "%s%d", con->name, con->index);
seq_pad(m, ' ');
seq_printf(m, "%c%c%c (%s)", con->read ? 'R' : '-',
- con->write ? 'W' : '-', con->unblank ? 'U' : '-',
- flags);
+ ((con->flags & CON_NBCON) || con->write) ? 'W' : '-',
+ con->unblank ? 'U' : '-', flags);
if (dev)
seq_printf(m, " %4d:%d", MAJOR(dev), MINOR(dev));
--
2.39.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH printk v6 00/17] add threaded printing + the rest
2024-09-04 12:05 [PATCH printk v6 00/17] add threaded printing + the rest John Ogness
2024-09-04 12:05 ` [PATCH printk v6 12/17] proc: consoles: Add notation to c_start/c_stop John Ogness
2024-09-04 12:05 ` [PATCH printk v6 13/17] proc: Add nbcon support for /proc/consoles John Ogness
@ 2024-09-04 14:30 ` Petr Mladek
2024-09-04 14:55 ` John Ogness
2 siblings, 1 reply; 5+ messages in thread
From: Petr Mladek @ 2024-09-04 14:30 UTC (permalink / raw)
To: John Ogness
Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
Greg Kroah-Hartman, linux-fsdevel, Jiri Slaby, linux-serial
On Wed 2024-09-04 14:11:19, John Ogness wrote:
> Hi,
>
> This is v6 of a series to implement threaded console printing
> as well as some other minor pieces (such as proc and sysfs
> recognition of nbcon consoles). v5 is here [0].
>
> For information about the motivation of the nbcon consoles,
> please read the cover letter of the original v1 [1].
>
> This series provides the remaining pieces of the printk
> rework. All other components are either already mainline or are
> currently in linux-next. In particular this series does:
>
> - Implement dedicated printing threads per nbcon console.
>
> - Implement forced threading of legacy consoles for PREEMPT_RT.
>
> - Implement nbcon support for proc and sysfs console-related
> files.
>
> - Provide a new helper function nbcon_reacquire_nobuf() to
> allow nbcon console drivers to reacquire ownership.
>
> Note that this series does *not* provide an nbcon console
> driver. That will come in a follow-up series.
JFYI, the patchset has been committed into printk/linux.git,
branch rework/threaded-printk.
I am not completely sure if we add this early enough for 6.12.
On one hand, the patchset should not change the handling of legacy
consoles and it does not add any nbcon console. But it touches
many code paths where we decide how to flush the consoles
and could imagine doing "ugly" mistakes there.
OK, let's see how it works in linux-next in the following days.
There is still time to catch problems and make the decision.
Best Regards,
Petr
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH printk v6 00/17] add threaded printing + the rest
2024-09-04 14:30 ` [PATCH printk v6 00/17] add threaded printing + the rest Petr Mladek
@ 2024-09-04 14:55 ` John Ogness
0 siblings, 0 replies; 5+ messages in thread
From: John Ogness @ 2024-09-04 14:55 UTC (permalink / raw)
To: Petr Mladek
Cc: Sergey Senozhatsky, Steven Rostedt, Thomas Gleixner, linux-kernel,
Greg Kroah-Hartman, linux-fsdevel, Jiri Slaby, linux-serial
On 2024-09-04, Petr Mladek <pmladek@suse.com> wrote:
> JFYI, the patchset has been committed into printk/linux.git,
> branch rework/threaded-printk.
Thanks!
> I am not completely sure if we add this early enough for 6.12.
> On one hand, the patchset should not change the handling of legacy
> consoles and it does not add any nbcon console. But it touches
> many code paths where we decide how to flush the consoles
> and could imagine doing "ugly" mistakes there.
>
> OK, let's see how it works in linux-next in the following days.
> There is still time to catch problems and make the decision.
I just don't think there are many real users of linux-next. The code
leading to the 5.19 revert sat in linux-next for a long time and no one
noticed anything. It wasn't until the 5.19-rc's started coming out that
real testing (and bug reporting) occurred.
I think linux-next is great for the kernel robots to work their magic,
but I don't know if having something in linux-next for 6 weeks is any
better than only 2 weeks.
John
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-09-04 14:55 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-04 12:05 [PATCH printk v6 00/17] add threaded printing + the rest John Ogness
2024-09-04 12:05 ` [PATCH printk v6 12/17] proc: consoles: Add notation to c_start/c_stop John Ogness
2024-09-04 12:05 ` [PATCH printk v6 13/17] proc: Add nbcon support for /proc/consoles John Ogness
2024-09-04 14:30 ` [PATCH printk v6 00/17] add threaded printing + the rest Petr Mladek
2024-09-04 14:55 ` John Ogness
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).