Messages in this thread | | | Date | Fri, 24 Nov 2023 14:37:11 +0100 | Subject | Re: [PATCH v3] serial: imx: fix tx statemachine deadlock | From | Rasmus Villemoes <> |
| |
On 24/11/2023 14.11, Paul Geurts wrote: > When using the serial port as RS485 port, the tx statemachine is used to > control the RTS pin to drive the RS485 transceiver TX_EN pin. When the > TTY port is closed in the middle of a transmission (for instance during > userland application crash), imx_uart_shutdown disables the interface > and disables the Transmission Complete interrupt. afer that, > imx_uart_stop_tx bails on an incomplete transmission, to be retriggered > by the TC interrupt. This interrupt is disabled and therefore the tx > statemachine never transitions out of SEND. The statemachine is in > deadlock now, and the TX_EN remains low, making the interface useless. > > imx_uart_stop_tx now checks for incomplete transmission AND whether TC > interrupts are enabled before bailing to be retriggered. This makes sure > the state machine handling is reached, and is properly set to > WAIT_AFTER_SEND. > > Fixes: cb1a60923609 ("serial: imx: implement rts delaying for rs485") > Signed-off-by: Paul Geurts <paul_geurts@live.nl>
Hi Paul
Interestingly, both Eberhard (cc'ed) and I have hit similar problems in this driver recently. See the thread https://lore.kernel.org/lkml/20231120132256.136625-1-rasmus.villemoes@prevas.dk/ .
It is possible that this also fixes the problems I/we saw, but I can't get around to testing until sometime next week.
Rasmus
| |