lkml.org 
[lkml]   [2020]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
SubjectRe: [PATCH v3 5/5] console: Introduce ->exit() callback
On (20/01/29 16:25), Andy Shevchenko wrote:
> I understand. Seems the ->setup() has to be idempotent. We can tell the same
> for ->exit() in some comment.
>
> Can you describe, btw, struct console in kernel doc format?
> It will be very helpful!

We probably need some documentation.

> > > In both cases we will get the console to have CON_ENABLED flag set.
> >
> > And there are sneaky consoles that have CON_ENABLED before we even
> > register them.
>
> So, taking into consideration my comment to the previous patch, what would be
> suggested guard here?
>
> For a starter something like this?
>
> if ((console->flags & CON_ENABLED) && console->exit)
> console->exit(console);

This will work if we also add something like this

---

diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index a30ff46c0081..01ced6f38776 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -2739,6 +2739,8 @@ void register_console(struct console *newcon)
}
}

+ newcon->flags &= ~CON_ENABLED;
+
if (console_drivers && console_drivers->flags & CON_BOOT)
bcon = console_drivers;

---
I don't know why some consoles set CON_ENABLED statically.

E.g. drivers/tty/serial/mux.c

static struct console mux_console = {
.name = "ttyB",
.write = mux_console_write,
.device = uart_console_device,
.setup = mux_console_setup,
.flags = CON_ENABLED | CON_PRINTBUFFER,
.index = 0,
.data = &mux_driver,
};
No idea...

Such consoles still will have CON_ENABLED even if registration failed
and we never ->setup() them.

-ss

\
 
 \ /
  Last update: 2020-01-29 16:12    [W:0.148 / U:0.248 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site