Hi Peter, On Fri, Mar 21, 2014 at 2:06 PM, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote: >> @@ -2681,10 +2683,12 @@ int uart_remove_one_port(struct uart_driver *drv, >> struct uart_port *uport) >> } >> >> /* >> - * If the port is used as a console, unregister it >> + * If the port is used as a console, unregister it, and power it >> down >> */ >> - if (uart_console(uport)) >> + if (uart_console(uport)) { >> unregister_console(uport->cons); >> + uart_change_pm(state, UART_PM_STATE_OFF); > > Won't this power off the port while tty consoles may still be open? I didn't see that actually happening. > I think the right thing here is to unregister_console then set uport->cons = > NULL > > [uport->cons is properly reassigned when/if a port is re-added via > uart_add_one_port()).] But indeed, for concistency/symmetry uport->state and uport->cons should be resend, but that's something separate. > Then, uart_close() will power off the port when all ttys using the port have > been closed. uart_close() won't get that far, so uart_change_pm() won't be called. See also https://lkml.org/lkml/2014/3/10/651, and my workaround for the crash https://lkml.org/lkml/2014/3/17/231. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html