* [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx()
@ 2021-06-09 1:49 Yoshihiro Shimoda
2021-06-09 12:29 ` Sergei Shtylyov
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Yoshihiro Shimoda @ 2021-06-09 1:49 UTC (permalink / raw)
To: gregkh, jirislaby; +Cc: linux-serial, linux-renesas-soc, Yoshihiro Shimoda
Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following
message is possible output when system enters suspend and while
transferring data, because clearing TIE bit in SCSCR is not able to
stop any dmaengine transfer.
sh-sci e6550000.serial: ttySC1: Unable to drain transmitter
Note that this patch uses dmaengine_terminate_async() so that
we can apply this patch into longterm kernel v4.9.x or later.
Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
---
Changes from v2:
- Don't use a macro.
- Revise the commit descrption.
https://lore.kernel.org/linux-renesas-soc/20210604095704.756190-1-yoshihiro.shimoda.uh@renesas.com/
Changes from v1:
- Don't put #ifdef in the .c file.
- Update the commit description.
https://lore.kernel.org/linux-renesas-soc/20210602114108.510527-1-yoshihiro.shimoda.uh@renesas.com/
drivers/tty/serial/sh-sci.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index 4baf1316ea72..2d5487bf6855 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port)
ctrl &= ~SCSCR_TIE;
serial_port_out(port, SCSCR, ctrl);
+
+#ifdef CONFIG_SERIAL_SH_SCI_DMA
+ if (to_sci_port(port)->chan_tx &&
+ !dma_submit_error(to_sci_port(port)->cookie_tx)) {
+ dmaengine_terminate_async(to_sci_port(port)->chan_tx);
+ to_sci_port(port)->cookie_tx = -EINVAL;
+ }
+#endif
}
static void sci_start_rx(struct uart_port *port)
--
2.25.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 1:49 [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() Yoshihiro Shimoda @ 2021-06-09 12:29 ` Sergei Shtylyov 2021-06-09 15:30 ` Geert Uytterhoeven 2021-06-09 12:37 ` Greg KH 2021-06-09 12:37 ` Greg KH 2 siblings, 1 reply; 11+ messages in thread From: Sergei Shtylyov @ 2021-06-09 12:29 UTC (permalink / raw) To: Yoshihiro Shimoda, gregkh, jirislaby; +Cc: linux-serial, linux-renesas-soc On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > message is possible output when system enters suspend and while > transferring data, because clearing TIE bit in SCSCR is not able to > stop any dmaengine transfer. > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > Note that this patch uses dmaengine_terminate_async() so that > we can apply this patch into longterm kernel v4.9.x or later. > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > --- > Changes from v2: > - Don't use a macro. > - Revise the commit descrption. > https://lore.kernel.org/linux-renesas-soc/20210604095704.756190-1-yoshihiro.shimoda.uh@renesas.com/ > > Changes from v1: > - Don't put #ifdef in the .c file. > - Update the commit description. > https://lore.kernel.org/linux-renesas-soc/20210602114108.510527-1-yoshihiro.shimoda.uh@renesas.com/ > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > index 4baf1316ea72..2d5487bf6855 100644 > --- a/drivers/tty/serial/sh-sci.c > +++ b/drivers/tty/serial/sh-sci.c > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > ctrl &= ~SCSCR_TIE; > > serial_port_out(port, SCSCR, ctrl); > + > +#ifdef CONFIG_SERIAL_SH_SCI_DMA Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > + if (to_sci_port(port)->chan_tx && > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > + to_sci_port(port)->cookie_tx = -EINVAL; > + } > +#endif > } > > static void sci_start_rx(struct uart_port *port) MBR, Sergei ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 12:29 ` Sergei Shtylyov @ 2021-06-09 15:30 ` Geert Uytterhoeven 2021-06-10 0:50 ` Yoshihiro Shimoda 0 siblings, 1 reply; 11+ messages in thread From: Geert Uytterhoeven @ 2021-06-09 15:30 UTC (permalink / raw) To: Sergei Shtylyov Cc: Yoshihiro Shimoda, Greg KH, Jiri Slaby, open list:SERIAL DRIVERS, Linux-Renesas Hi Sergei, On Wed, Jun 9, 2021 at 5:09 PM Sergei Shtylyov <sergei.shtylyov@gmail.com> wrote: > On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > message is possible output when system enters suspend and while > > transferring data, because clearing TIE bit in SCSCR is not able to > > stop any dmaengine transfer. > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > Note that this patch uses dmaengine_terminate_async() so that > > we can apply this patch into longterm kernel v4.9.x or later. > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > --- > > Changes from v2: > > - Don't use a macro. > > - Revise the commit descrption. > > https://lore.kernel.org/linux-renesas-soc/20210604095704.756190-1-yoshihiro.shimoda.uh@renesas.com/ > > > > Changes from v1: > > - Don't put #ifdef in the .c file. > > - Update the commit description. > > https://lore.kernel.org/linux-renesas-soc/20210602114108.510527-1-yoshihiro.shimoda.uh@renesas.com/ > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > index 4baf1316ea72..2d5487bf6855 100644 > > --- a/drivers/tty/serial/sh-sci.c > > +++ b/drivers/tty/serial/sh-sci.c > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > ctrl &= ~SCSCR_TIE; > > > > serial_port_out(port, SCSCR, ctrl); > > + > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > > > + if (to_sci_port(port)->chan_tx && > > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > > + to_sci_port(port)->cookie_tx = -EINVAL; Because chan_tx and cookie_tx do not exist if CONFIG_SERIAL_SH_SCI_DMA is disabled. Yes, that's why all the DMA code in this driver (.c file) is protected by #ifdef CONFIG_SERIAL_SH_SCI_DMA. > > + } > > +#endif > > } > > > > static void sci_start_rx(struct uart_port *port) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 15:30 ` Geert Uytterhoeven @ 2021-06-10 0:50 ` Yoshihiro Shimoda 2021-06-10 6:58 ` Geert Uytterhoeven 0 siblings, 1 reply; 11+ messages in thread From: Yoshihiro Shimoda @ 2021-06-10 0:50 UTC (permalink / raw) To: Geert Uytterhoeven, Sergei Shtylyov Cc: Greg KH, Jiri Slaby, open list:SERIAL DRIVERS, Linux-Renesas Hi Geert-san, Sergei-san, > From: Geert Uytterhoeven, Sent: Thursday, June 10, 2021 12:30 AM > On Wed, Jun 9, 2021 at 5:09 PM Sergei Shtylyov > <sergei.shtylyov@gmail.com> wrote: > > On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > > message is possible output when system enters suspend and while > > > transferring data, because clearing TIE bit in SCSCR is not able to > > > stop any dmaengine transfer. > > > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > > > Note that this patch uses dmaengine_terminate_async() so that > > > we can apply this patch into longterm kernel v4.9.x or later. > > > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > > --- > > > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > > index 4baf1316ea72..2d5487bf6855 100644 > > > --- a/drivers/tty/serial/sh-sci.c > > > +++ b/drivers/tty/serial/sh-sci.c > > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > > ctrl &= ~SCSCR_TIE; > > > > > > serial_port_out(port, SCSCR, ctrl); > > > + > > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > > > Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > > > > > + if (to_sci_port(port)->chan_tx && > > > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > > > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > > > + to_sci_port(port)->cookie_tx = -EINVAL; > > Because chan_tx and cookie_tx do not exist if CONFIG_SERIAL_SH_SCI_DMA > is disabled. This is a nit though, chan_tx always exists. > Yes, that's why all the DMA code in this driver (.c file) is protected by > #ifdef CONFIG_SERIAL_SH_SCI_DMA. I'm thinking we have to remove #ifdef from sh-sci.c file at first... Best regards, Yoshihiro Shimoda ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-10 0:50 ` Yoshihiro Shimoda @ 2021-06-10 6:58 ` Geert Uytterhoeven 2021-06-10 7:01 ` Greg KH 0 siblings, 1 reply; 11+ messages in thread From: Geert Uytterhoeven @ 2021-06-10 6:58 UTC (permalink / raw) To: Yoshihiro Shimoda Cc: Sergei Shtylyov, Greg KH, Jiri Slaby, open list:SERIAL DRIVERS, Linux-Renesas Hi Shimoda-san, On Thu, Jun 10, 2021 at 2:50 AM Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> wrote: > > From: Geert Uytterhoeven, Sent: Thursday, June 10, 2021 12:30 AM > > On Wed, Jun 9, 2021 at 5:09 PM Sergei Shtylyov > > <sergei.shtylyov@gmail.com> wrote: > > > On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > > > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > > > message is possible output when system enters suspend and while > > > > transferring data, because clearing TIE bit in SCSCR is not able to > > > > stop any dmaengine transfer. > > > > > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > > > > > Note that this patch uses dmaengine_terminate_async() so that > > > > we can apply this patch into longterm kernel v4.9.x or later. > > > > > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > > > --- > > > > > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > > > 1 file changed, 8 insertions(+) > > > > > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > > > index 4baf1316ea72..2d5487bf6855 100644 > > > > --- a/drivers/tty/serial/sh-sci.c > > > > +++ b/drivers/tty/serial/sh-sci.c > > > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > > > ctrl &= ~SCSCR_TIE; > > > > > > > > serial_port_out(port, SCSCR, ctrl); > > > > + > > > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > > > > > Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > > > > > > > + if (to_sci_port(port)->chan_tx && > > > > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > > > > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > > > > + to_sci_port(port)->cookie_tx = -EINVAL; > > > > Because chan_tx and cookie_tx do not exist if CONFIG_SERIAL_SH_SCI_DMA > > is disabled. > > This is a nit though, chan_tx always exists. I stand corrected, only cookie_tx depends on CONFIG_SERIAL_SH_SCI_DMA. > > Yes, that's why all the DMA code in this driver (.c file) is protected by > > #ifdef CONFIG_SERIAL_SH_SCI_DMA. > > I'm thinking we have to remove #ifdef from sh-sci.c file at first... While I don't disagree that would be worthwhile, do we really need to refactor a driver first, before a fix that follows the existing driver style can be applied (and backported)? Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-10 6:58 ` Geert Uytterhoeven @ 2021-06-10 7:01 ` Greg KH 2021-06-10 7:28 ` Yoshihiro Shimoda 0 siblings, 1 reply; 11+ messages in thread From: Greg KH @ 2021-06-10 7:01 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Yoshihiro Shimoda, Sergei Shtylyov, Jiri Slaby, open list:SERIAL DRIVERS, Linux-Renesas On Thu, Jun 10, 2021 at 08:58:04AM +0200, Geert Uytterhoeven wrote: > Hi Shimoda-san, > > On Thu, Jun 10, 2021 at 2:50 AM Yoshihiro Shimoda > <yoshihiro.shimoda.uh@renesas.com> wrote: > > > From: Geert Uytterhoeven, Sent: Thursday, June 10, 2021 12:30 AM > > > On Wed, Jun 9, 2021 at 5:09 PM Sergei Shtylyov > > > <sergei.shtylyov@gmail.com> wrote: > > > > On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > > > > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > > > > message is possible output when system enters suspend and while > > > > > transferring data, because clearing TIE bit in SCSCR is not able to > > > > > stop any dmaengine transfer. > > > > > > > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > > > > > > > Note that this patch uses dmaengine_terminate_async() so that > > > > > we can apply this patch into longterm kernel v4.9.x or later. > > > > > > > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > > > > --- > > > > > > > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > > > > 1 file changed, 8 insertions(+) > > > > > > > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > > > > index 4baf1316ea72..2d5487bf6855 100644 > > > > > --- a/drivers/tty/serial/sh-sci.c > > > > > +++ b/drivers/tty/serial/sh-sci.c > > > > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > > > > ctrl &= ~SCSCR_TIE; > > > > > > > > > > serial_port_out(port, SCSCR, ctrl); > > > > > + > > > > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > > > > > > > Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > > > > > > > > > + if (to_sci_port(port)->chan_tx && > > > > > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > > > > > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > > > > > + to_sci_port(port)->cookie_tx = -EINVAL; > > > > > > Because chan_tx and cookie_tx do not exist if CONFIG_SERIAL_SH_SCI_DMA > > > is disabled. > > > > This is a nit though, chan_tx always exists. > > I stand corrected, only cookie_tx depends on CONFIG_SERIAL_SH_SCI_DMA. > > > > Yes, that's why all the DMA code in this driver (.c file) is protected by > > > #ifdef CONFIG_SERIAL_SH_SCI_DMA. > > > > I'm thinking we have to remove #ifdef from sh-sci.c file at first... > > While I don't disagree that would be worthwhile, do we really need > to refactor a driver first, before a fix that follows the existing > driver style can be applied (and backported)? No we do not. Sorry if this usage is already in the driver, might as well keep it there, I thought this was an exception and was being added for the first time here. thanks, greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-10 7:01 ` Greg KH @ 2021-06-10 7:28 ` Yoshihiro Shimoda 0 siblings, 0 replies; 11+ messages in thread From: Yoshihiro Shimoda @ 2021-06-10 7:28 UTC (permalink / raw) To: Greg KH, Geert Uytterhoeven Cc: Sergei Shtylyov, Jiri Slaby, open list:SERIAL DRIVERS, Linux-Renesas Hi Greg, Geert, > From: Greg KH, Sent: Thursday, June 10, 2021 4:02 PM > > On Thu, Jun 10, 2021 at 08:58:04AM +0200, Geert Uytterhoeven wrote: > > Hi Shimoda-san, > > > > On Thu, Jun 10, 2021 at 2:50 AM Yoshihiro Shimoda > > <yoshihiro.shimoda.uh@renesas.com> wrote: > > > > From: Geert Uytterhoeven, Sent: Thursday, June 10, 2021 12:30 AM > > > > On Wed, Jun 9, 2021 at 5:09 PM Sergei Shtylyov > > > > <sergei.shtylyov@gmail.com> wrote: > > > > > On 6/9/21 4:49 AM, Yoshihiro Shimoda wrote: > > > > > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > > > > > message is possible output when system enters suspend and while > > > > > > transferring data, because clearing TIE bit in SCSCR is not able to > > > > > > stop any dmaengine transfer. > > > > > > > > > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > > > > > > > > > Note that this patch uses dmaengine_terminate_async() so that > > > > > > we can apply this patch into longterm kernel v4.9.x or later. > > > > > > > > > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > > > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > > > > > --- > > > > > > > > > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > > > > > 1 file changed, 8 insertions(+) > > > > > > > > > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > > > > > index 4baf1316ea72..2d5487bf6855 100644 > > > > > > --- a/drivers/tty/serial/sh-sci.c > > > > > > +++ b/drivers/tty/serial/sh-sci.c > > > > > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > > > > > ctrl &= ~SCSCR_TIE; > > > > > > > > > > > > serial_port_out(port, SCSCR, ctrl); > > > > > > + > > > > > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > > > > > > > > > Why not use IS_ENABLED() instead? Gets rid of #ifdef. :-) > > > > > > > > > > > + if (to_sci_port(port)->chan_tx && > > > > > > + !dma_submit_error(to_sci_port(port)->cookie_tx)) { > > > > > > + dmaengine_terminate_async(to_sci_port(port)->chan_tx); > > > > > > + to_sci_port(port)->cookie_tx = -EINVAL; > > > > > > > > Because chan_tx and cookie_tx do not exist if CONFIG_SERIAL_SH_SCI_DMA > > > > is disabled. > > > > > > This is a nit though, chan_tx always exists. > > > > I stand corrected, only cookie_tx depends on CONFIG_SERIAL_SH_SCI_DMA. > > > > > > Yes, that's why all the DMA code in this driver (.c file) is protected by > > > > #ifdef CONFIG_SERIAL_SH_SCI_DMA. > > > > > > I'm thinking we have to remove #ifdef from sh-sci.c file at first... > > > > While I don't disagree that would be worthwhile, do we really need > > to refactor a driver first, before a fix that follows the existing > > driver style can be applied (and backported)? > > No we do not. Sorry if this usage is already in the driver, might as > well keep it there, I thought this was an exception and was being added > for the first time here. Thank you for your comments. I understood we should keep this driver and fix it at first. So, I'll add a description why we need #ifdef in .c file on v4 patch. Best regards, Yoshihiro Shimoda ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 1:49 [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() Yoshihiro Shimoda 2021-06-09 12:29 ` Sergei Shtylyov @ 2021-06-09 12:37 ` Greg KH 2021-06-10 0:44 ` Yoshihiro Shimoda 2021-06-09 12:37 ` Greg KH 2 siblings, 1 reply; 11+ messages in thread From: Greg KH @ 2021-06-09 12:37 UTC (permalink / raw) To: Yoshihiro Shimoda; +Cc: jirislaby, linux-serial, linux-renesas-soc On Wed, Jun 09, 2021 at 10:49:02AM +0900, Yoshihiro Shimoda wrote: > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > message is possible output when system enters suspend and while > transferring data, because clearing TIE bit in SCSCR is not able to > stop any dmaengine transfer. > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > Note that this patch uses dmaengine_terminate_async() so that > we can apply this patch into longterm kernel v4.9.x or later. What should it be using instead of this? Don't worry about older kernels (you didn't cc: stable@vger.kernel.org so I guess you don't either), get it right here and then we can deal with backports later. thanks, greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 12:37 ` Greg KH @ 2021-06-10 0:44 ` Yoshihiro Shimoda 0 siblings, 0 replies; 11+ messages in thread From: Yoshihiro Shimoda @ 2021-06-10 0:44 UTC (permalink / raw) To: Greg KH Cc: jirislaby@kernel.org, linux-serial@vger.kernel.org, linux-renesas-soc@vger.kernel.org Hi Greg, > From: Greg KH, Sent: Wednesday, June 9, 2021 9:37 PM > > On Wed, Jun 09, 2021 at 10:49:02AM +0900, Yoshihiro Shimoda wrote: > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > message is possible output when system enters suspend and while > > transferring data, because clearing TIE bit in SCSCR is not able to > > stop any dmaengine transfer. > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > Note that this patch uses dmaengine_terminate_async() so that > > we can apply this patch into longterm kernel v4.9.x or later. > > What should it be using instead of this? We should be using dmaengine_terminate_all() instead of this for v4.4.x. However, dmaengine_terminate_all() is deprecated in mainline now. > Don't worry about older > kernels (you didn't cc: stable@vger.kernel.org so I guess you don't > either), get it right here and then we can deal with backports later. I got it. Best regards, Yoshihiro Shimoda ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 1:49 [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() Yoshihiro Shimoda 2021-06-09 12:29 ` Sergei Shtylyov 2021-06-09 12:37 ` Greg KH @ 2021-06-09 12:37 ` Greg KH 2021-06-10 0:45 ` Yoshihiro Shimoda 2 siblings, 1 reply; 11+ messages in thread From: Greg KH @ 2021-06-09 12:37 UTC (permalink / raw) To: Yoshihiro Shimoda; +Cc: jirislaby, linux-serial, linux-renesas-soc On Wed, Jun 09, 2021 at 10:49:02AM +0900, Yoshihiro Shimoda wrote: > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > message is possible output when system enters suspend and while > transferring data, because clearing TIE bit in SCSCR is not able to > stop any dmaengine transfer. > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > Note that this patch uses dmaengine_terminate_async() so that > we can apply this patch into longterm kernel v4.9.x or later. > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > --- > Changes from v2: > - Don't use a macro. > - Revise the commit descrption. > https://lore.kernel.org/linux-renesas-soc/20210604095704.756190-1-yoshihiro.shimoda.uh@renesas.com/ > > Changes from v1: > - Don't put #ifdef in the .c file. > - Update the commit description. > https://lore.kernel.org/linux-renesas-soc/20210602114108.510527-1-yoshihiro.shimoda.uh@renesas.com/ > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > index 4baf1316ea72..2d5487bf6855 100644 > --- a/drivers/tty/serial/sh-sci.c > +++ b/drivers/tty/serial/sh-sci.c > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > ctrl &= ~SCSCR_TIE; > > serial_port_out(port, SCSCR, ctrl); > + > +#ifdef CONFIG_SERIAL_SH_SCI_DMA Please no #ifdef in .c files. thanks, greg k-h ^ permalink raw reply [flat|nested] 11+ messages in thread
* RE: [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() 2021-06-09 12:37 ` Greg KH @ 2021-06-10 0:45 ` Yoshihiro Shimoda 0 siblings, 0 replies; 11+ messages in thread From: Yoshihiro Shimoda @ 2021-06-10 0:45 UTC (permalink / raw) To: Greg KH Cc: jirislaby@kernel.org, linux-serial@vger.kernel.org, linux-renesas-soc@vger.kernel.org Hi Greg, > From: Greg KH, Sent: Wednesday, June 9, 2021 9:38 PM > > On Wed, Jun 09, 2021 at 10:49:02AM +0900, Yoshihiro Shimoda wrote: > > Stop dmaengine transfer in sci_stop_tx(). Otherwise, the following > > message is possible output when system enters suspend and while > > transferring data, because clearing TIE bit in SCSCR is not able to > > stop any dmaengine transfer. > > > > sh-sci e6550000.serial: ttySC1: Unable to drain transmitter > > > > Note that this patch uses dmaengine_terminate_async() so that > > we can apply this patch into longterm kernel v4.9.x or later. > > > > Fixes: 73a19e4c0301 ("serial: sh-sci: Add DMA support.") > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> > > > > drivers/tty/serial/sh-sci.c | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c > > index 4baf1316ea72..2d5487bf6855 100644 > > --- a/drivers/tty/serial/sh-sci.c > > +++ b/drivers/tty/serial/sh-sci.c > > @@ -610,6 +610,14 @@ static void sci_stop_tx(struct uart_port *port) > > ctrl &= ~SCSCR_TIE; > > > > serial_port_out(port, SCSCR, ctrl); > > + > > +#ifdef CONFIG_SERIAL_SH_SCI_DMA > > Please no #ifdef in .c files. I got it. I'll fix this somehow... Best regards, Yoshihiro Shimoda ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2021-06-10 7:29 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-06-09 1:49 [PATCH v3] serial: sh-sci: Stop dmaengine transfer in sci_stop_tx() Yoshihiro Shimoda 2021-06-09 12:29 ` Sergei Shtylyov 2021-06-09 15:30 ` Geert Uytterhoeven 2021-06-10 0:50 ` Yoshihiro Shimoda 2021-06-10 6:58 ` Geert Uytterhoeven 2021-06-10 7:01 ` Greg KH 2021-06-10 7:28 ` Yoshihiro Shimoda 2021-06-09 12:37 ` Greg KH 2021-06-10 0:44 ` Yoshihiro Shimoda 2021-06-09 12:37 ` Greg KH 2021-06-10 0:45 ` Yoshihiro Shimoda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox