When a PCI error is detected, reset code in 8250_pci.c suspends the uart ports to block IO while recovery procedure is performed. Nevertheless, TIOCMGET and TIOCMSET ioctls are still able to reach the device even when it is suspended, which might cause EEH recovery of serial adapters to fail on Power systems. This patch blocks any TIOCMGET/TIOCMSET calls from reaching the device if the port is suspended, to avoid racing with the recovery procedure. Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxxxxxxx> --- drivers/tty/serial/serial_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/serial_core.c b/drivers/tty/serial/serial_core.c index 603d2cc..e4ecbd2 100644 --- a/drivers/tty/serial/serial_core.c +++ b/drivers/tty/serial/serial_core.c @@ -979,7 +979,7 @@ static int uart_tiocmget(struct tty_struct *tty) int result = -EIO; mutex_lock(&port->mutex); - if (!(tty->flags & (1 << TTY_IO_ERROR))) { + if (!(tty->flags & (1 << TTY_IO_ERROR)) && !uport->suspended) { result = uport->mctrl; spin_lock_irq(&uport->lock); result |= uport->ops->get_mctrl(uport); @@ -999,7 +999,7 @@ uart_tiocmset(struct tty_struct *tty, unsigned int set, unsigned int clear) int ret = -EIO; mutex_lock(&port->mutex); - if (!(tty->flags & (1 << TTY_IO_ERROR))) { + if (!(tty->flags & (1 << TTY_IO_ERROR)) && !uport->suspended) { uart_update_mctrl(uport, set, clear); ret = 0; } -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html