> -----Original Message----- > From: Xiaolei Wang <xiaolei.wang@xxxxxxxxxxxxx> > Sent: 2022年10月24日 17:12 > To: gregkh@xxxxxxxxxxxxxxxxxxx; jirislaby@xxxxxxxxxx; lukas@xxxxxxxxx > Cc: fugang.duan@xxxxxxx; Sherry Sun <sherry.sun@xxxxxxx>; > ilpo.jarvinen@xxxxxxxxxxxxxxx; linux-serial@xxxxxxxxxxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx > Subject: [PATCH] serial: fsl_lpuart: Skip the reset for the early console port > > The commit 60f361722ad2 ("serial: fsl_lpuart: Reset prior to > registration") has moved the reset before the port registration, this change > makes the uart_console() in lpuart_global_reset() no sense since the port is > not registered to the system yet. So drop it. > But we sill need to check if the port is used as an early console before > performing the port reset, otherwise the reset will hang the system. > > Fixes: 60f361722ad2 ("serial: fsl_lpuart: Reset prior to registration") > Signed-off-by: Xiaolei Wang <xiaolei.wang@xxxxxxxxxxxxx> > --- > drivers/tty/serial/fsl_lpuart.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c > index 67fa113f77d4..d0efeba5c695 100644 > --- a/drivers/tty/serial/fsl_lpuart.c > +++ b/drivers/tty/serial/fsl_lpuart.c > @@ -239,6 +239,8 @@ > /* IMX lpuart has four extra unused regs located at the beginning */ > #define IMX_REG_OFF 0x10 > > +static resource_size_t lpuart_earlycon_mapbase; > + > enum lpuart_type { > VF610_LPUART, > LS1021A_LPUART, > @@ -410,7 +412,7 @@ static int lpuart_global_reset(struct lpuart_port > *sport) > void __iomem *global_addr; > int ret; > > - if (uart_console(port)) > + if ((port->mapbase - 0x10) == lpuart_earlycon_mapbase) > return 0; > > ret = clk_prepare_enable(sport->ipg_clk); > @@ -2604,6 +2606,7 @@ static int __init > lpuart32_imx_early_console_setup(struct earlycon_device *devic > device->port.iotype = UPIO_MEM32; > device->port.membase += IMX_REG_OFF; > device->con->write = lpuart32_early_write; > + lpuart_earlycon_mapbase = device->port.mapbase; > Hi, thanks for the fix for lpuart driver, but this looks more like a workaround patch. Per my understanding, the root cause for this issue is that lpuart_global_reset() break the on-going transfer, such as the earlycon here. I have sent a patch to fix the lpuart console hang issue, please check https://lore.kernel.org/lkml/20221024085844.22786-1-sherry.sun@xxxxxxx/ Best Regards Sherry