[lkml]   [2007]   [Aug]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[ review 25/28] serial: clear proper MPSC interrupt cause bits
    The interrupt clearing code in mpsc_sdma_intr_ack() mistakenly clears the
    interrupt for both controllers instead of just the one its supposed to.
    This can result in the other controller appearing to hang because its
    interrupt was effectively lost.

    So, don't clear the interrupt cause bits for both MPSC controllers when
    clearing the interrupt for one of them. Just clear the one that is
    supposed to be cleared.

    Signed-off-by: Jay Lubomirski <>
    Acked-by: Mark A. Greer <>
    Signed-off-by: Andrew Morton <>
    Signed-off-by: Chris Wright <>
    Signed-off-by: Greg Kroah-Hartman <>
    drivers/serial/mpsc.c | 3 ++-
    1 files changed, 2 insertions(+), 1 deletions(-)

    diff --git a/drivers/serial/mpsc.c b/drivers/serial/mpsc.c
    index 3d2fcc5..64ed5ef 100644
    --- a/drivers/serial/mpsc.c
    +++ b/drivers/serial/mpsc.c
    @@ -502,7 +502,8 @@ mpsc_sdma_intr_ack(struct mpsc_port_info *pi)

    if (pi->mirror_regs)
    pi->shared_regs->SDMA_INTR_CAUSE_m = 0;
    - writel(0, pi->shared_regs->sdma_intr_base + SDMA_INTR_CAUSE);
    + writeb(0x00, pi->shared_regs->sdma_intr_base + SDMA_INTR_CAUSE +
    + pi->port.line);

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-08-11 21:09    [W:0.018 / U:7.684 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site