On Mon, Sep 16, 2024 at 7:27 PM Johan Hovold <johan+linaro@xxxxxxxxxx> wrote: > > A commit adding back the stopping of tx on port shutdown failed to add > back the locking which had also been removed by commit e83766334f96 > ("tty: serial: qcom_geni_serial: No need to stop tx/rx on UART > shutdown"). > > Holding the port lock is needed to serialise against the console code, > which may update the interrupt enable register and access the port > state. > > The call to stop rx that was added by the same commit is redundant as > serial core will already have taken care of that and can thus be > removed. > > Fixes: d8aca2f96813 ("tty: serial: qcom-geni-serial: stop operations in progress at shutdown") > Fixes: 947cc4ecc06c ("serial: qcom-geni: fix soft lockup on sw flow control and suspend") > Cc: stable@xxxxxxxxxxxxxxx # 6.3 > Cc: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> > Signed-off-by: Johan Hovold <johan+linaro@xxxxxxxxxx> > --- > drivers/tty/serial/qcom_geni_serial.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c > index 9ea6bd09e665..88ad5a6e7de2 100644 > --- a/drivers/tty/serial/qcom_geni_serial.c > +++ b/drivers/tty/serial/qcom_geni_serial.c > @@ -1096,10 +1096,10 @@ static void qcom_geni_serial_shutdown(struct uart_port *uport) > { > disable_irq(uport->irq); > > + uart_port_lock_irq(uport); > qcom_geni_serial_stop_tx(uport); > - qcom_geni_serial_stop_rx(uport); > - > qcom_geni_serial_cancel_tx_cmd(uport); > + uart_port_unlock_irq(uport); > } > > static void qcom_geni_serial_flush_buffer(struct uart_port *uport) > -- > 2.44.2 > > Reviewed-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>