linux/drivers/tty/serial/8250
Gabriel Krisman Bertazi f209fa03fc serial: 8250_pci: Detach low-level driver during PCI error recovery
During a PCI error recovery, like the ones provoked by EEH in the ppc64
platform, all IO to the device must be blocked while the recovery is
completed.  Current 8250_pci implementation only suspends the port
instead of detaching it, which doesn't prevent incoming accesses like
TIOCMGET and TIOCMSET calls from reaching the device.  Those end up
racing with the EEH recovery, crashing it.  Similar races were also
observed when opening the device and when shutting it down during
recovery.

This patch implements a more robust IO blockage for the 8250_pci
recovery by unregistering the port at the beginning of the procedure and
re-adding it afterwards.  Since the port is detached from the uart
layer, we can be sure that no request will make through to the device
during recovery.  This is similar to the solution used by the JSM serial
driver.

I thank Peter Hurley <peter@hurleysoftware.com> for valuable input on
this one over one year ago.

Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-11-29 20:20:07 +01:00
..
8250_accent.c tty: serial: 8250: Add generic port init macro 2016-02-06 23:15:53 -08:00
8250_acorn.c tty: serial: 8250: Fix whitespace errors 2016-02-06 23:15:53 -08:00
8250_bcm2835aux.c serial: bcm2835: fix unsigned int issue with irq 2016-02-14 17:39:36 -08:00
8250_boca.c tty: serial: 8250: Add generic port init macro 2016-02-06 23:15:53 -08:00
8250_core.c serial: 8250: Expose set_ldisc function 2016-11-16 10:59:38 +01:00
8250_dma.c serial: 8250_dma: power off device after TX is done 2016-11-16 10:57:26 +01:00
8250_dw.c serial: 8250_dw: Add support for IrDA SIR mode 2016-11-16 10:59:38 +01:00
8250_early.c serial: 8250_early: Add earlycon support for Synopsys DesignWare ABP UART 2016-06-25 09:12:55 -07:00
8250_em.c serial: 8250: remove the redundant include 2015-03-26 22:21:08 +01:00
8250_exar_st16c554.c tty: serial: 8250: Add generic port init macro 2016-02-06 23:15:53 -08:00
8250_fintek.c serial: 8250_fintek: Add F81865 Support 2016-10-27 16:28:17 +02:00
8250_fourport.c tty: serial: 8250: Add generic port init macro 2016-02-06 23:15:53 -08:00
8250_fsl.c serial: export fsl8250_handle_irq 2015-11-20 16:19:54 -08:00
8250_gsc.c tty: serial: 8250: Suitably replace printk 2016-02-06 23:15:53 -08:00
8250_hp300.c tty: serial: 8250: Suitably replace printk 2016-02-06 23:15:53 -08:00
8250_hub6.c tty: serial: 8250: Fix whitespace errors 2016-02-06 23:15:53 -08:00
8250_ingenic.c serial: 8250_ingenic: drop #if conditional surrounding earlycon code 2016-06-25 14:31:04 -07:00
8250_lpc18xx.c serial: 8250: add LPC18xx/43xx UART driver 2015-06-01 06:56:33 +09:00
8250_lpss.c Merge 4.9-rc3 into tty-next 2016-10-30 06:42:10 -04:00
8250_mid.c Merge 4.8-rc5 into tty-next 2016-09-05 08:11:21 +02:00
8250_moxa.c tty: serial: 8250: add MOXA Smartio MUE boards support 2016-03-07 16:11:14 -08:00
8250_mtk.c serial: 8250_mtk: support big baud rate. 2016-08-31 16:01:26 +02:00
8250_of.c serial: 8250: pxa: add devicetree earlyconsole 2016-10-27 16:27:24 +02:00
8250_omap.c Revert "tty/serial/8250: use mctrl_gpio helpers" 2016-08-31 15:36:01 +02:00
8250_pci.c serial: 8250_pci: Detach low-level driver during PCI error recovery 2016-11-29 20:20:07 +01:00
8250_pnp.c tty: serial: 8250: Fix indentation warnings 2016-02-06 23:15:53 -08:00
8250_port.c serial: 8250: Expose set_ldisc function 2016-11-16 10:59:38 +01:00
8250_pxa.c serial: pxa2xx: mark PM functions as __maybe_unused 2016-11-10 14:50:46 +01:00
8250_uniphier.c serial: 8250_uniphier: avoid locking for FCR register write 2016-11-10 14:30:09 +01:00
8250.h serial: 8250: Add IrDA to UART capabilities 2016-11-16 10:59:38 +01:00
Kconfig serial: rewrite pxa2xx-uart to use 8250_core 2016-10-27 16:03:09 +02:00
Makefile serial: rewrite pxa2xx-uart to use 8250_core 2016-10-27 16:03:09 +02:00
serial_cs.c tty: serial: 8250: Fix multi-line strings 2016-02-06 23:15:53 -08:00