diff mbox series

[2/2] serial: 8250: Fix runtime PM for start_tx() for empty buffer

Message ID 20220411094805.45696-2-tony@atomide.com
State New
Headers show
Series None | expand

Commit Message

Tony Lindgren April 11, 2022, 9:48 a.m. UTC
Commit 932d596378b0 ("serial: 8250: Return early in .start_tx() if there
are no chars to send") caused a regression where the drivers implementing
runtime PM stopped idling.

We need to call serial8250_rpm_put_tx() on early exit, it normally gets
called later on at __stop_tx().

Fixes: 932d596378b0 ("serial: 8250: Return early in .start_tx() if there are no chars to send")
Cc: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/tty/serial/8250/8250_port.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -1677,8 +1677,10 @@  static void serial8250_start_tx(struct uart_port *port)
 
 	serial8250_rpm_get_tx(up);
 
-	if (!port->x_char && uart_circ_empty(&port->state->xmit))
+	if (!port->x_char && uart_circ_empty(&port->state->xmit)) {
+		serial8250_rpm_put_tx(up);
 		return;
+	}
 
 	if (em485 &&
 	    em485->active_timer == &em485->start_tx_timer) {