From: Doug Brown Date: Thu, 6 Jun 2024 19:56:31 +0000 (-0700) Subject: Revert "serial: core: only stop transmit when HW fifo is empty" X-Git-Tag: v6.9.8~71 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa42c4ec85c97a5daaed27ad355e96dfa10f1a11;p=thirdparty%2Fkernel%2Fstable.git Revert "serial: core: only stop transmit when HW fifo is empty" commit c5603e2a621dac10c5e21cc430848ebcfa6c7e01 upstream. This reverts commit 7bfb915a597a301abb892f620fe5c283a9fdbd77. This commit broke pxa and omap-serial, because it inhibited them from calling stop_tx() if their TX FIFOs weren't completely empty. This resulted in these two drivers hanging during transmits because the TX interrupt would stay enabled, and a new TX interrupt would never fire. Cc: stable@vger.kernel.org Fixes: 7bfb915a597a ("serial: core: only stop transmit when HW fifo is empty") Signed-off-by: Doug Brown Link: https://lore.kernel.org/r/20240606195632.173255-2-doug@schmorgal.com Signed-off-by: Greg Kroah-Hartman --- diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 0a0f6e21d40ec..c1fd3d2f6238f 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h @@ -789,8 +789,7 @@ enum UART_TX_FLAGS { if (pending < WAKEUP_CHARS) { \ uart_write_wakeup(__port); \ \ - if (!((flags) & UART_TX_NOSTOP) && pending == 0 && \ - __port->ops->tx_empty(__port)) \ + if (!((flags) & UART_TX_NOSTOP) && pending == 0) \ __port->ops->stop_tx(__port); \ } \ \