linux/drivers/tty/serial
Geert Uytterhoeven 26f0739936 serial: sh-sci: Fix fallback to PIO in sci_dma_rx_complete()
When submitting a DMA request fails in sci_dma_rx_complete(), the driver
tries to fall back to PIO, but that does not work: no more data will be
received, or the kernel will even crash.

Fix this similar as in (but not identical to) sci_submit_rx():
  - On SCIF, PIO cannot take over if any DMA transactions are pending,
    hence they must be terminated first.
  - All active cookies must be invalidated, else rx_timer_fn() may
    trigger a NULL pointer dereference.
  - Restarting the port is not needed, as it is already running, but
    serial port interrupts must be directed back from the DMA engine to
    the CPU.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-01-08 16:56:52 +01:00
..
8250 TTY/Serial driver patches for 4.21-rc1 2018-12-28 20:33:54 -08:00
cpm_uart mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
jsm tty: serial: jsm: remove redundant pointer ch 2018-07-13 15:36:32 +02:00
21285.c
altera_jtaguart.c
altera_uart.c serial: altera: set RRDY flag also without irq 2018-02-28 13:30:09 +01:00
amba-pl010.c
amba-pl011.c serial: set suppress_bind_attrs flag only if builtin 2018-11-09 09:07:17 -08:00
amba-pl011.h
apbuart.c
apbuart.h
ar933x_uart.c
arc_uart.c serial: arc_uart: Fix out-of-bounds access through DT alias 2018-02-28 15:29:59 +01:00
atmel_serial.c tty/serial: atmel: add ISO7816 support 2018-10-02 13:38:55 -07:00
atmel_serial.h tty/serial: atmel: add ISO7816 support 2018-10-02 13:38:55 -07:00
bcm63xx_uart.c
clps711x.c serial: clps711x: Remove board support 2019-01-08 16:55:18 +01:00
digicolor-usart.c
dz.c
dz.h
earlycon-arm-semihost.c
earlycon.c earlycon: Remove hardcoded port->uartclk initialization in of_setup_earlycon 2018-05-14 13:41:05 +02:00
efm32-uart.c
fsl_lpuart.c serial: fsl_lpuart: clear parity enable bit when disable parity 2018-11-09 08:48:57 -08:00
icom.c
icom.h
ifx6x60.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
ifx6x60.h
imx.c serial: imx: fix error handling in console_setup 2018-11-27 09:56:20 +01:00
ioc3_serial.c
ioc4_serial.c
ip22zilog.c
ip22zilog.h
Kconfig tty: serial: Add RDA8810PL UART driver 2018-12-31 13:10:01 -08:00
kgdb_nmi.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
kgdboc.c kgdboc: fix KASAN global-out-of-bounds bug in param_set_kgdboc_var() 2018-12-06 15:59:07 +01:00
lantiq.c serial: lantiq: Change init_lqasc to static declaration 2018-11-09 08:43:27 -08:00
lpc32xx_hs.c
Makefile tty: serial: Add RDA8810PL UART driver 2018-12-31 13:10:01 -08:00
max310x.c serial: max310x: Use struct_size() in devm_kzalloc() 2019-01-08 16:56:04 +01:00
max3100.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
mcf.c
men_z135_uart.c
meson_uart.c tty: serial: meson: fix typo in the "stop bit" register definition 2017-11-28 15:32:33 +01:00
mpc52xx_uart.c
mps2-uart.c
mpsc.c
msm_serial.c tty: serial: msm_serial: Add __maybe_unused to suspend/resume callbacks 2018-05-14 13:41:05 +02:00
mux.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
mvebu-uart.c serial: mvebu-uart: initialize over sampling stack register 2018-11-27 09:20:17 +01:00
mxs-auart.c serial: mxs-auart: Fix potential infinite loop 2018-09-18 16:07:24 +02:00
netx-serial.c
omap-serial.c tty: omap-serial: Fix initial on-boot RTS GPIO level 2018-01-09 16:45:17 +01:00
owl-uart.c
pch_uart.c pch_uart: remove set but not used variable 'tx_empty' 2018-11-09 09:07:17 -08:00
pic32_uart.c serial: set suppress_bind_attrs flag only if builtin 2018-11-09 09:07:17 -08:00
pic32_uart.h
pmac_zilog.c tty: Use of_node_name_{eq,prefix} for node name comparisons 2018-12-17 16:12:17 +01:00
pmac_zilog.h
pnx8xxx_uart.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
pxa.c serial: pxa: Fix an error handling path in 'serial_pxa_probe()' 2018-06-28 21:07:54 +09:00
qcom_geni_serial.c tty: serial: qcom_geni_serial: Fix UART hang 2018-12-20 16:26:28 +01:00
rda-uart.c tty: serial: Add RDA8810PL UART driver 2018-12-31 13:10:01 -08:00
rp2.c treewide: devm_kzalloc() -> devm_kcalloc() 2018-06-12 16:19:22 -07:00
sa1100.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
samsung.c tty: serial: samsung: Increase maximum baudrate 2018-12-17 16:16:28 +01:00
samsung.h
sb1250-duart.c
sc16is7xx.c sc16is7xx: Use struct_size() in devm_kzalloc() 2019-01-08 16:56:04 +01:00
sccnxp.c serial: sccnxp: Allow to use non-standard baud rates 2018-12-20 16:26:59 +01:00
serial_core.c tty/serial: do not free trasnmit buffer page under port lock 2018-12-17 16:11:23 +01:00
serial_ks8695.c
serial_mctrl_gpio.c gpiolib: Pass array info to get/set array functions 2018-09-13 11:16:54 +02:00
serial_mctrl_gpio.h
serial_txx9.c
serial-tegra.c serial: tegra: fix some spelling mistakes 2018-11-09 08:58:18 -08:00
sh-sci.c serial: sh-sci: Fix fallback to PIO in sci_dma_rx_complete() 2019-01-08 16:56:52 +01:00
sh-sci.h serial: sh-sci: Support for HSCIF RX sampling point adjustment 2018-04-23 10:08:18 +02:00
sirfsoc_uart.c serial: sirf: Fix out-of-bounds access through DT alias 2018-02-28 15:30:00 +01:00
sirfsoc_uart.h
sn_console.c TTY: sn_console: Replace spin_is_locked() with spin_trylock() 2018-10-04 11:06:35 -07:00
sprd_serial.c serial: sprd: Fix the indentation issue 2018-09-18 16:07:24 +02:00
st-asc.c tty: serial: simplify getting .drvdata 2018-04-22 17:29:43 +02:00
stm32-usart.c serial: stm32: fix initialization of RS485 mode 2018-03-15 17:39:43 +01:00
stm32-usart.h serial: stm32: add support for RS485 hardware control mode 2018-03-14 13:35:37 +01:00
suncore.c tty: Use of_node_name_{eq,prefix} for node name comparisons 2018-12-17 16:12:17 +01:00
sunhv.c
sunsab.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
sunsab.h
sunsu.c TTY/Serial driver patches for 4.21-rc1 2018-12-28 20:33:54 -08:00
sunzilog.c
sunzilog.h
timbuart.c
timbuart.h
uartlite.c serial-uartlite: fix null pointer dereference on pointer port 2018-11-27 09:08:15 +01:00
ucc_uart.c
vr41xx_siu.c
vt8500_serial.c
xilinx_uartps.c serial: uartps: Fix interrupt mask issue to handle the RX interrupts properly 2018-12-19 08:23:20 +01:00
zs.c
zs.h