> -----Original Message----- > From: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> > Sent: Thursday, February 13, 2020 5:44 AM > To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>; Jiri Slaby > <jslaby@xxxxxxxx>; Timur Tabi <timur@xxxxxxxxxx>; Leo Li > <leoyang.li@xxxxxxx>; Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> > Cc: Qiang Zhao <qiang.zhao@xxxxxxx>; linuxppc-dev@xxxxxxxxxxxxxxxx; Scott > Wood <oss@xxxxxxxxxxxx>; Christophe Leroy <christophe.leroy@xxxxxx>; > linux-serial@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx > Subject: [PATCH] serial: cpm_uart: call cpm_muram_init before registering > console > > Christophe reports that powerpc 8xx silently fails to 5.6-rc1. It turns out I was > wrong about nobody relying on the lazy initialization of the cpm/qe muram in > commit b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of > cpm_muram_init()). > > Rather than reinstating the somewhat dubious lazy call (initializing a currently > held spinlock, and implicitly doing a GFP_KERNEL under that spinlock), make > sure that cpm_muram_init() is called early enough - I thought the calls from > the subsys_initcalls were good enough, but when used by console drivers, > that's obviously not the case. cpm_muram_init() is safe to call twice (there's > an early return if it is already initialized), so keep the call from cpm_init() - in > case SERIAL_CPM_CONSOLE=n. > > Reported-by: Christophe Leroy <christophe.leroy@xxxxxx> > Fixes: b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of cpm_muram_init()) > Signed-off-by: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> Acked-by: Li Yang <leoyang.li@xxxxxxx> > --- > > Christophe, can I get you to add a formal Tested-by? > > I'm not sure which tree this should go through. > > drivers/tty/serial/cpm_uart/cpm_uart_core.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/tty/serial/cpm_uart/cpm_uart_core.c > b/drivers/tty/serial/cpm_uart/cpm_uart_core.c > index 19d5a4cf29a6..d4b81b06e0cb 100644 > --- a/drivers/tty/serial/cpm_uart/cpm_uart_core.c > +++ b/drivers/tty/serial/cpm_uart/cpm_uart_core.c > @@ -1373,6 +1373,7 @@ static struct console cpm_scc_uart_console = { > > static int __init cpm_uart_console_init(void) { > + cpm_muram_init(); > register_console(&cpm_scc_uart_console); > return 0; > } > -- > 2.23.0