On Tue, 2018-07-24 at 14:23 -0500, Aaron Sierra wrote: > The sleep wake-up refactoring that I introduced in > > commit c7e1b4059075 ("tty: serial: exar: Relocate sleep wake-up > handling") > > did not account for devices with a slave device on the expansion port. > This patch pokes the INT0 register in the slave device, if present, in > order to ensure that MSI interrupts don't get permanently "stuck" > because of a sleep wake-up interrupt as described here: > > commit 2c0ac5b48a35 ("serial: exar: Fix stuck MSIs") > > This also converts an ioread8() to readb() in order to provide visual > consistency with the MMIO-only accessors used elsewhere in the driver. Thanks a lot! Fixes: c7e1b4059075 ("tty: serial: exar: Relocate sleep wake-up handling") Reviewed-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Reported-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > Signed-off-by: Aaron Sierra <asierra@xxxxxxxxxxx> > --- > drivers/tty/serial/8250/8250_exar.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_exar.c > b/drivers/tty/serial/8250/8250_exar.c > index 7a98acd..0089aa3 100644 > --- a/drivers/tty/serial/8250/8250_exar.c > +++ b/drivers/tty/serial/8250/8250_exar.c > @@ -445,7 +445,11 @@ static irqreturn_t exar_misc_handler(int irq, > void *data) > struct exar8250 *priv = data; > > /* Clear all PCI interrupts by reading INT0. No effect on IIR > */ > - ioread8(priv->virt + UART_EXAR_INT0); > + readb(priv->virt + UART_EXAR_INT0); > + > + /* Clear INT0 for Expansion Interface slave ports, too */ > + if (priv->board->num_ports > 8) > + readb(priv->virt + 0x2000 + UART_EXAR_INT0); > > return IRQ_HANDLED; > } -- Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Intel Finland Oy -- 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