• Jan Kiszka's avatar
    serial: exar: Fix stuck MSIs · 2c0ac5b4
    Jan Kiszka authored
    After migrating 8250_exar to MSI in 172c33cb, we can get stuck
    without further interrupts because of the special wake-up event these
    chips send. They are only cleared by reading INT0. As we fail to do so
    during startup and shutdown, we can leave the interrupt line asserted,
    which is fatal with edge-triggered MSIs.
    
    Add the required reading of INT0 to startup and shutdown. Also account
    for the fact that a pending wake-up interrupt means we have to return 1
    from exar_handle_irq. Drop the unneeded reading of INT1..3 along with
    this - those never reset anything.
    
    An alternative approach would have been disabling the wake-up interrupt.
    Unfortunately, this feature (REGB[17] = 1) is not available on the
    XR17D15X.
    
    Fixes: 172c33cb ("serial: exar: Enable MSI support")
    Signed-off-by: default avatarJan Kiszka <jan.kiszka@siemens.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2c0ac5b4
8250_port.c 81.6 KB