Star64_linux/drivers/tty/serial
Sumit Garg 5946d1f5b3 kdb: Switch to use safer dbg_io_ops over console APIs
In kgdb context, calling console handlers aren't safe due to locks used
in those handlers which could in turn lead to a deadlock. Although, using
oops_in_progress increases the chance to bypass locks in most console
handlers but it might not be sufficient enough in case a console uses
more locks (VT/TTY is good example).

Currently when a driver provides both polling I/O and a console then kdb
will output using the console. We can increase robustness by using the
currently active polling I/O driver (which should be lockless) instead
of the corresponding console. For several common cases (e.g. an
embedded system with a single serial port that is used both for console
output and debugger I/O) this will result in no console handler being
used.

In order to achieve this we need to reverse the order of preference to
use dbg_io_ops (uses polling I/O mode) over console APIs. So we just
store "struct console" that represents debugger I/O in dbg_io_ops and
while emitting kdb messages, skip console that matches dbg_io_ops
console in order to avoid duplicate messages. After this change,
"is_console" param becomes redundant and hence removed.

Suggested-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Link: https://lore.kernel.org/r/1591264879-25920-5-git-send-email-sumit.garg@linaro.org
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
2020-06-26 15:40:16 +01:00
..
8250 treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
cpm_uart
jsm
21285.c
altera_jtaguart.c
altera_uart.c
amba-pl010.c
amba-pl011.c TTY/Serial driver updates for 5.8-rc1 2020-06-07 09:52:36 -07:00
amba-pl011.h
apbuart.c
apbuart.h
ar933x_uart.c serial: Allow uart_get_rs485_mode() to return errno 2020-05-15 14:47:05 +02:00
arc_uart.c
atmel_serial.c serial: Allow uart_get_rs485_mode() to return errno 2020-05-15 14:47:05 +02:00
atmel_serial.h
bcm63xx_uart.c Revert "tty: serial: bcm63xx: fix missing clk_put() in bcm63xx_uart" 2020-05-04 11:49:57 +02:00
clps711x.c
digicolor-usart.c
dz.c
dz.h
earlycon-arm-semihost.c
earlycon-riscv-sbi.c
earlycon.c
efm32-uart.c
fsl_linflexuart.c
fsl_lpuart.c tty: serial: fsl_lpuart: Use __maybe_unused instead of #if CONFIG_PM_SLEEP 2020-05-15 15:46:29 +02:00
icom.c
icom.h
ifx6x60.c
ifx6x60.h
imx.c tty: serial: imx: clear Ageing Timer Interrupt in handler 2020-05-29 13:00:54 +02:00
ip22zilog.c
ip22zilog.h
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
kgdb_nmi.c kdb: Switch to use safer dbg_io_ops over console APIs 2020-06-26 15:40:16 +01:00
kgdboc.c kdb: Switch to use safer dbg_io_ops over console APIs 2020-06-26 15:40:16 +01:00
lantiq.c serial: lantiq: Make driver modular 2020-05-15 12:22:19 +02:00
lpc32xx_hs.c serial: lpc32xx_hs: Drop surplus include 2020-04-16 16:12:33 +02:00
Makefile
max310x.c
max3100.c
mcf.c
men_z135_uart.c
meson_uart.c
milbeaut_usio.c
mpc52xx_uart.c
mps2-uart.c
msm_serial.c
mux.c
mvebu-uart.c
mxs-auart.c
omap-serial.c serial: Allow uart_get_rs485_mode() to return errno 2020-05-15 14:47:05 +02:00
owl-uart.c tty: serial: owl: add "much needed" clk_prepare_enable() 2020-04-23 15:46:30 +02:00
pch_uart.c
pic32_uart.c
pic32_uart.h
pmac_zilog.c
pmac_zilog.h
pnx8xxx_uart.c
pxa.c
qcom_geni_serial.c TTY/Serial driver updates for 5.8-rc1 2020-06-07 09:52:36 -07:00
rda-uart.c
rp2.c
sa1100.c
samsung_tty.c tty: serial: samsung: Correct clock selection logic 2020-05-15 12:24:15 +02:00
sb1250-duart.c
sc16is7xx.c sc16is7xx: Add flag to activate IrDA mode 2020-05-29 12:42:56 +02:00
sccnxp.c
serial-tegra.c
serial_core.c serial: 8250: Support rs485 bus termination GPIO 2020-05-29 12:42:54 +02:00
serial_mctrl_gpio.c
serial_mctrl_gpio.h
serial_txx9.c
sh-sci.c serial: sh-sci: Make sure status register SCxSR is read in correct sequence 2020-04-16 16:16:52 +02:00
sh-sci.h serial: sh-sci: Drop unused include 2020-04-16 16:13:34 +02:00
sifive.c tty: serial: add missing spin_lock_init for SiFive serial console 2020-05-15 14:55:10 +02:00
sirfsoc_uart.c
sirfsoc_uart.h
sprd_serial.c
st-asc.c
stm32-usart.c serial: stm32: add no_console_suspend support 2020-05-19 15:53:36 +02:00
stm32-usart.h tty: serial: Add modem control gpio support for STM32 UART 2020-05-15 12:24:15 +02:00
suncore.c
sunhv.c serial: sunhv: Initialize lock for non-registered console 2020-04-16 16:16:52 +02:00
sunsab.c
sunsab.h
sunsu.c
sunzilog.c
sunzilog.h
tegra-tcu.c
timbuart.c
timbuart.h
uartlite.c
ucc_uart.c
vr41xx_siu.c
vt8500_serial.c
xilinx_uartps.c Merge 5.7-rc5 into tty-next 2020-05-11 08:55:10 +02:00
zs.c
zs.h