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:13.459 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site