mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Diogo Ivo <diogo.ivo.sx@renesas.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	 Jiri Slaby <jirislaby@kernel.org>
Cc: linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org,
	 linux-renesas-soc@vger.kernel.org,
	Biju Das <biju.das.jz@bp.renesas.com>,
	 Au Dang <au.dang.jx@renesas.com>,
	 Geert Uytterhoeven <geert+renesas@glider.be>,
	 Wolfram Sang <wsa+renesas@sang-engineering.com>,
	 Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	 Thierry Bultel <thierry.bultel.yh@bp.renesas.com>,
	stable@vger.kernel.org,  Diogo Ivo <diogo.ivo.sx@renesas.com>
Subject: [PATCH v4 0/7] Fix transmit handling on SCI/RSCI ports
Date: Fri, 13 Nov 2026 18:26:25 +0000	[thread overview]
Message-ID: <20261113-g2ul_sci-v4-0-6815e41d90c5@renesas.com> (raw)

Hi all,

This is v4 of the SCI/RSCI transmit fixes originally posted by Biju
Das. Patches 1, 2, 5 and 6 retain the v3 code and descriptions from
Biju and Au Dang. Patches 3, 4 and 7 incorporate additional RSCI fixes
found in the meantime. This revision supersedes the v3 series [1].

The series addresses transmit stalls, duplicated output and spurious
interrupts on the SCI (PORT_SCI) and RSCI ports of the sh-sci driver:

 - Patch 1 removes the code that disables TE at the end of a
   transmission on SCI, which the hardware manual does not describe.
 - Patch 2 stops the TEI handler from turning the transmitter off
   while the xmit kfifo still holds data, which could stall or lose
   output. It also covers the TE handling that patch 1 no longer does
   in sci_transmit_chars().
 - Patch 3 enables TEIE in rsci_stop_tx() when TE is set, allowing
   transmit-end handling to clear TE after the hardware FIFO drains.
 - Patch 4 avoids kicking RSCI transmission from the receive-error
   handler, which could otherwise cause spurious TEI interrupts or
   leave the transmitter in a state that stalls later output.
 - Patch 5 skips the software clear of the TDxE flag on SCI, since
   hardware clears it on a TDR write and the extra clear caused a
   spurious TXI and a duplicated last character.
 - Patch 6 forces a TE toggle when restoring SCSCR in the console
   write path on SCI, so the TXI that restarts an interrupted drain is
   generated. Without it the RZ/G2UL console can hang during boot.
 - Patch 7 simplifies rsci_transmit_chars() now that the receive-error
   handler no longer invokes it, and reuses rsci_stop_tx().

OpenCode (GPT-6.1 Sol) assisted with reviewing the previous discussion,
preparing and reordering this series, updating trailers and recipients,
and drafting this cover letter, as well as helping debug the various
edge cases and proposing code changes.

[1] https://lore.kernel.org/all/20261026-g2ul_sci-v3-0-b3097163edd5@bp.renesas.com/

Changes in v4:
 * Trim unrelated x86/TDX recipients identified in the v3 discussion.
 * Keep the code and descriptions of the four v3 patches unchanged.
 * Add patch 3 to enable transmit-end interrupts in rsci_stop_tx().
 * Add patch 4 to avoid kicking RSCI TX from the receive-error handler.
 * Add patch 7 to simplify rsci_transmit_chars().
 * Group patches with Fixes tags first (patches 1-4) and mark them for
   stable.
 * Base the combined series on next-20261019.
- Link to v3: https://lore.kernel.org/all/20261026-g2ul_sci-v3-0-b3097163edd5@bp.renesas.com/

Changes in v3:
 * Updated commit description for patch#2
 * When the port is stopped with data still queued, the transmit_chars()
   paths (sci_transmit_chars() and rsci_transmit_chars()) now also swap
   TIE for TEIE, as they already did for an empty kfifo. Without this, TIE
   would keep firing with nothing the driver is allowed to send, and TEI
   would never be raised to complete the transmission.
 * Replaced sci_tx_interrupt() with port's transmit_chars() to avoid
   lock drop race in sci_tx_end_interrupt() before TX handoff.
 * Added missing has_tdxe_auto_clear init in scix_early_console_setup().
 * Replaced to_sci_port(port)->type with sci_port->type in
   serial_console_write().
- Link to v2: https://lore.kernel.org/r/20261021-g2ul_sci-v2-0-b4e038220018@bp.renesas.com

Changes in v2:
 * Updated commit header and description for patch#2 and #3.
 * Take the port lock before reading the control register, so the
   read-modify-write in sci_tx_end_interrupt() is protected.
 * Extended the pending-data check in sci_tx_end_interrupt() to cover
   x_char and a stopped port, not only a non-empty xmit kfifo.
 * Replaced the PORT_SCI check with a has_tdxe_auto_clear flag in
   struct sci_port, set from the new tdxe_auto_clear field in
   struct sci_of_data.
- Link to v1: https://lore.kernel.org/r/20261019170139.473808-1-biju.das.jz@bp.renesas.com

---
Au Dang (2):
      serial: sh-sci: Skip TDxE clear when hardware clears it automatically
      serial: sh-sci: Toggle TE when restoring SCSCR in console write on SCI

Biju Das (2):
      serial: sh-sci: Drop TE disable at end of transmission on SCI
      serial: sh-sci: Keep TX enabled on TEI while data is pending

Diogo Ivo (3):
      serial: rsci: Enable transmit end interrupt in rsci_stop_tx()
      serial: sh-sci: Do not kick TX from sci_er_interrupt() on RSCI
      serial: rsci: Simplify rsci_transmit_chars()

 drivers/tty/serial/rsci.c          | 23 +++++-------
 drivers/tty/serial/sh-sci-common.h |  4 +++
 drivers/tty/serial/sh-sci.c        | 73 ++++++++++++++++++++++++++------------
 3 files changed, 62 insertions(+), 38 deletions(-)
---
base-commit: 3d229ce89862b8e82d71a9e11d6f840ca272a6d6
change-id: 20261020-g2ul_sci-b610606ea5b5

Best regards,
--  
Diogo Ivo <diogo.ivo.sx@renesas.com>


             reply	other threads:[~2026-11-13 18:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-13 18:26 Diogo Ivo [this message]
2026-11-13 18:26 ` [PATCH v4 1/7] serial: sh-sci: Drop TE disable at end of transmission on SCI Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 2/7] serial: sh-sci: Keep TX enabled on TEI while data is pending Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 3/7] serial: rsci: Enable transmit end interrupt in rsci_stop_tx() Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 4/7] serial: sh-sci: Do not kick TX from sci_er_interrupt() on RSCI Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 5/7] serial: sh-sci: Skip TDxE clear when hardware clears it automatically Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 6/7] serial: sh-sci: Toggle TE when restoring SCSCR in console write on SCI Diogo Ivo
2026-11-13 18:26 ` [PATCH v4 7/7] serial: rsci: Simplify rsci_transmit_chars() Diogo Ivo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261113-g2ul_sci-v4-0-6815e41d90c5@renesas.com \
    --to=diogo.ivo.sx@renesas.com \
    --cc=au.dang.jx@renesas.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=geert+renesas@glider.be \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=stable@vger.kernel.org \
    --cc=thierry.bultel.yh@bp.renesas.com \
    --cc=wsa+renesas@sang-engineering.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®