[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 Fixes: b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of cpm_muram_init()) Signed-off-by: Rasmus Villemoes --- 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
Re: [PATCH] serial: cpm_uart: call cpm_muram_init before registering console
Le 13/02/2020 à 12:43, Rasmus Villemoes a écrit : 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 Fixes: b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of cpm_muram_init()) Signed-off-by: Rasmus Villemoes Tested-by: Christophe Leroy --- 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; }
Re: [PATCH] serial: cpm_uart: call cpm_muram_init before registering console
On Thu, Feb 13, 2020 at 12:43:42PM +0100, Rasmus Villemoes wrote: > 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 > Fixes: b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of cpm_muram_init()) > Signed-off-by: Rasmus Villemoes > --- > > Christophe, can I get you to add a formal Tested-by? > > I'm not sure which tree this should go through. I can take it, thanks. greg k-h
RE: [PATCH] serial: cpm_uart: call cpm_muram_init before registering console
> -Original Message- > From: Rasmus Villemoes > Sent: Thursday, February 13, 2020 5:44 AM > To: Greg Kroah-Hartman ; Jiri Slaby > ; Timur Tabi ; Leo Li > ; Rasmus Villemoes > Cc: Qiang Zhao ; linuxppc-dev@lists.ozlabs.org; Scott > Wood ; Christophe Leroy ; > linux-ser...@vger.kernel.org; linux-ker...@vger.kernel.org > 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 > Fixes: b6231ea2b3c6 (soc: fsl: qe: drop broken lazy call of cpm_muram_init()) > Signed-off-by: Rasmus Villemoes Acked-by: Li Yang > --- > > 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