[PATCH v4 11/13] tty: serial: qcom-geni-serial: stop operations in progress at shutdown

Bartosz Golaszewski posted 13 patches 2 years, 9 months ago
There is a newer version of this series
[PATCH v4 11/13] tty: serial: qcom-geni-serial: stop operations in progress at shutdown
Posted by Bartosz Golaszewski 2 years, 9 months ago
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

We don't stop transmissions in progress at shutdown. This is fine with
FIFO SE mode but with DMA it causes trouble so fix it now.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 drivers/tty/serial/qcom_geni_serial.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
index fe15fc0e1345..c0270eec2a66 100644
--- a/drivers/tty/serial/qcom_geni_serial.c
+++ b/drivers/tty/serial/qcom_geni_serial.c
@@ -864,6 +864,9 @@ static void get_tx_fifo_size(struct qcom_geni_serial_port *port)
 
 static void qcom_geni_serial_shutdown(struct uart_port *uport)
 {
+	qcom_geni_serial_stop_tx(uport);
+	qcom_geni_serial_stop_rx(uport);
+
 	disable_irq(uport->irq);
 }
 
-- 
2.37.2
Re: [PATCH v4 11/13] tty: serial: qcom-geni-serial: stop operations in progress at shutdown
Posted by Jiri Slaby 2 years, 9 months ago
On 29. 11. 22, 12:00, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> 
> We don't stop transmissions in progress at shutdown. This is fine with
> FIFO SE mode but with DMA it causes trouble so fix it now.
> 
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>   drivers/tty/serial/qcom_geni_serial.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
> index fe15fc0e1345..c0270eec2a66 100644
> --- a/drivers/tty/serial/qcom_geni_serial.c
> +++ b/drivers/tty/serial/qcom_geni_serial.c
> @@ -864,6 +864,9 @@ static void get_tx_fifo_size(struct qcom_geni_serial_port *port)
>   
>   static void qcom_geni_serial_shutdown(struct uart_port *uport)
>   {
> +	qcom_geni_serial_stop_tx(uport);
> +	qcom_geni_serial_stop_rx(uport);
> +
>   	disable_irq(uport->irq);

I'm just asking without actually looking into the code: cannot the 
interrupt reschedule/restart the above?

thanks,
-- 
js
suse labs
Re: [PATCH v4 11/13] tty: serial: qcom-geni-serial: stop operations in progress at shutdown
Posted by Bartosz Golaszewski 2 years, 9 months ago
On Wed, Nov 30, 2022 at 10:37 AM Jiri Slaby <jirislaby@kernel.org> wrote:
>
> On 29. 11. 22, 12:00, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > We don't stop transmissions in progress at shutdown. This is fine with
> > FIFO SE mode but with DMA it causes trouble so fix it now.
> >
> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> > ---
> >   drivers/tty/serial/qcom_geni_serial.c | 3 +++
> >   1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/tty/serial/qcom_geni_serial.c b/drivers/tty/serial/qcom_geni_serial.c
> > index fe15fc0e1345..c0270eec2a66 100644
> > --- a/drivers/tty/serial/qcom_geni_serial.c
> > +++ b/drivers/tty/serial/qcom_geni_serial.c
> > @@ -864,6 +864,9 @@ static void get_tx_fifo_size(struct qcom_geni_serial_port *port)
> >
> >   static void qcom_geni_serial_shutdown(struct uart_port *uport)
> >   {
> > +     qcom_geni_serial_stop_tx(uport);
> > +     qcom_geni_serial_stop_rx(uport);
> > +
> >       disable_irq(uport->irq);
>
> I'm just asking without actually looking into the code: cannot the
> interrupt reschedule/restart the above?
>

It can actually, good catch, thanks.

Bart