]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Jul 2024 06:37:55 +0000 (08:37 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 4 Jul 2024 06:37:55 +0000 (08:37 +0200)
added patches:
serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch

queue-5.10/serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch b/queue-5.10/serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch
new file mode 100644 (file)
index 0000000..15af833
--- /dev/null
@@ -0,0 +1,44 @@
+From c128a1b0523b685c8856ddc0ac0e1caef1fdeee5 Mon Sep 17 00:00:00 2001
+From: Udit Kumar <u-kumar1@ti.com>
+Date: Tue, 25 Jun 2024 21:37:25 +0530
+Subject: serial: 8250_omap: Fix Errata i2310 with RX FIFO level check
+
+From: Udit Kumar <u-kumar1@ti.com>
+
+commit c128a1b0523b685c8856ddc0ac0e1caef1fdeee5 upstream.
+
+Errata i2310[0] says, Erroneous timeout can be triggered,
+if this Erroneous interrupt is not cleared then it may leads
+to storm of interrupts.
+
+Commit 9d141c1e6157 ("serial: 8250_omap: Implementation of Errata i2310")
+which added the workaround but missed ensuring RX FIFO is really empty
+before applying the errata workaround as recommended in the errata text.
+Fix this by adding back check for UART_OMAP_RX_LVL to be 0 for
+workaround to take effect.
+
+[0] https://www.ti.com/lit/pdf/sprz536 page 23
+
+Fixes: 9d141c1e6157 ("serial: 8250_omap: Implementation of Errata i2310")
+Cc: stable@vger.kernel.org
+Reported-by: Vignesh Raghavendra <vigneshr@ti.com>
+Closes: https://lore.kernel.org/all/e96d0c55-0b12-4cbf-9d23-48963543de49@ti.com/
+Signed-off-by: Udit Kumar <u-kumar1@ti.com>
+Link: https://lore.kernel.org/r/20240625160725.2102194-1-u-kumar1@ti.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/tty/serial/8250/8250_omap.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/tty/serial/8250/8250_omap.c
++++ b/drivers/tty/serial/8250/8250_omap.c
+@@ -656,7 +656,8 @@ static irqreturn_t omap8250_irq(int irq,
+        * https://www.ti.com/lit/pdf/sprz536
+        */
+       if (priv->habit & UART_RX_TIMEOUT_QUIRK &&
+-              (iir & UART_IIR_RX_TIMEOUT) == UART_IIR_RX_TIMEOUT) {
++          (iir & UART_IIR_RX_TIMEOUT) == UART_IIR_RX_TIMEOUT &&
++          serial_port_in(port, UART_OMAP_RX_LVL) == 0) {
+               unsigned char efr2, timeout_h, timeout_l;
+               efr2 = serial_in(up, UART_OMAP_EFR2);
index 1f0ed1f74302d49ca18a87cbb11872d91f10c258..fb6b586f27d2396d77e87096eac83bed958ecdf2 100644 (file)
@@ -288,3 +288,4 @@ kvm-arm64-vgic-v4-make-the-doorbell-request-robust-w.r.t-preemption.patch
 arm-dts-rockchip-rk3066a-add-sound-dai-cells-to-hdmi.patch
 arm64-dts-rockchip-add-sound-dai-cells-for-rk3368.patch
 xdp-xdp_mem_allocator-can-be-null-in-trace_mem_connect.patch
+serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch