2022-04-18 03:59:04

by Maciej W. Rozycki

[permalink] [raw]
Subject: [PATCH v4 4/5] serial: 8250: Also set sticky MCR bits in console restoration

Sticky MCR bits are lost in console restoration if console suspending
has been disabled. This currently affects the AFE bit, which works in
combination with RTS which we set, so we want to make sure the UART
retains control of its FIFO where previously requested. Also specific
drivers may need other bits in the future.

Signed-off-by: Maciej W. Rozycki <[email protected]>
Fixes: 4516d50aabed ("serial: 8250: Use canary to restart console after suspend")
Cc: [email protected] # v4.0+
---
New change in v4, factored out from 5/5.
---
drivers/tty/serial/8250/8250_port.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

linux-serial-8250-mcr-restore.diff
Index: linux-macro/drivers/tty/serial/8250/8250_port.c
===================================================================
--- linux-macro.orig/drivers/tty/serial/8250/8250_port.c
+++ linux-macro/drivers/tty/serial/8250/8250_port.c
@@ -3308,7 +3308,7 @@ static void serial8250_console_restore(s

serial8250_set_divisor(port, baud, quot, frac);
serial_port_out(port, UART_LCR, up->lcr);
- serial8250_out_MCR(up, UART_MCR_DTR | UART_MCR_RTS);
+ serial8250_out_MCR(up, up->mcr | UART_MCR_DTR | UART_MCR_RTS);
}

/*


2022-04-19 13:46:43

by Andy Shevchenko

[permalink] [raw]
Subject: Re: [PATCH v4 4/5] serial: 8250: Also set sticky MCR bits in console restoration

On Mon, Apr 18, 2022 at 2:02 AM Maciej W. Rozycki <[email protected]> wrote:
>
> Sticky MCR bits are lost in console restoration if console suspending
> has been disabled. This currently affects the AFE bit, which works in
> combination with RTS which we set, so we want to make sure the UART
> retains control of its FIFO where previously requested. Also specific
> drivers may need other bits in the future.

Since it's a fix it should be moved to the beginning of the series.

Reviewed-by: Andy Shevchenko <[email protected]>

> Signed-off-by: Maciej W. Rozycki <[email protected]>
> Fixes: 4516d50aabed ("serial: 8250: Use canary to restart console after suspend")
> Cc: [email protected] # v4.0+
> ---
> New change in v4, factored out from 5/5.
> ---
> drivers/tty/serial/8250/8250_port.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> linux-serial-8250-mcr-restore.diff
> Index: linux-macro/drivers/tty/serial/8250/8250_port.c
> ===================================================================
> --- linux-macro.orig/drivers/tty/serial/8250/8250_port.c
> +++ linux-macro/drivers/tty/serial/8250/8250_port.c
> @@ -3308,7 +3308,7 @@ static void serial8250_console_restore(s
>
> serial8250_set_divisor(port, baud, quot, frac);
> serial_port_out(port, UART_LCR, up->lcr);
> - serial8250_out_MCR(up, UART_MCR_DTR | UART_MCR_RTS);
> + serial8250_out_MCR(up, up->mcr | UART_MCR_DTR | UART_MCR_RTS);
> }
>
> /*



--
With Best Regards,
Andy Shevchenko

2022-04-19 19:41:58

by Maciej W. Rozycki

[permalink] [raw]
Subject: Re: [PATCH v4 4/5] serial: 8250: Also set sticky MCR bits in console restoration

On Mon, 18 Apr 2022, Andy Shevchenko wrote:

> > Sticky MCR bits are lost in console restoration if console suspending
> > has been disabled. This currently affects the AFE bit, which works in
> > combination with RTS which we set, so we want to make sure the UART
> > retains control of its FIFO where previously requested. Also specific
> > drivers may need other bits in the future.
>
> Since it's a fix it should be moved to the beginning of the series.

OK, patch reordered in v5.

Maciej