From ed9fbe3cf5e4e531ba44ce463025682b09b0057f Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 4 Jul 2024 08:37:55 +0200 Subject: [PATCH] 5.10-stable patches added patches: serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch --- ...rrata-i2310-with-rx-fifo-level-check.patch | 44 +++++++++++++++++++ queue-5.10/series | 1 + 2 files changed, 45 insertions(+) create mode 100644 queue-5.10/serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch 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 index 00000000000..15af833d92b --- /dev/null +++ b/queue-5.10/serial-8250_omap-fix-errata-i2310-with-rx-fifo-level-check.patch @@ -0,0 +1,44 @@ +From c128a1b0523b685c8856ddc0ac0e1caef1fdeee5 Mon Sep 17 00:00:00 2001 +From: Udit Kumar +Date: Tue, 25 Jun 2024 21:37:25 +0530 +Subject: serial: 8250_omap: Fix Errata i2310 with RX FIFO level check + +From: Udit Kumar + +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 +Closes: https://lore.kernel.org/all/e96d0c55-0b12-4cbf-9d23-48963543de49@ti.com/ +Signed-off-by: Udit Kumar +Link: https://lore.kernel.org/r/20240625160725.2102194-1-u-kumar1@ti.com +Signed-off-by: Greg Kroah-Hartman +--- + 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); diff --git a/queue-5.10/series b/queue-5.10/series index 1f0ed1f7430..fb6b586f27d 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -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 -- 2.47.3