[PATCH] serial: PL011: move interrupt clearing
Grant Likely
grant.likely at secretlab.ca
Thu Mar 29 16:49:37 EDT 2012
On Wed, Mar 21, 2012 at 1:15 PM, Linus Walleij <linus.walleij at linaro.org> wrote:
> Commit 360f748b204275229f8398cb2f9f53955db1503b
> "serial: PL011: clear pending interrupts"
> attempts to clear interrupts by writing to a
> yet-unassigned memory address. This fixes the issue.
>
> The breaking patch is marked for stable so should be
> carried along with the other patch.
>
> Cc: Shreshtha Kumar Sahu <shreshthakumar.sahu at stericsson.com>
> Cc: Russell King <linux at arm.linux.org.uk>
> Cc: stable <stable at vger.kernel.org>
> Reported-by: Viresh Kumar <viresh.kumar at st.com>
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
Ugh; the original patch is obviously broken. How did it get applied
without testing?
Greg, can you get this out to Linus ASAP please? I have one comment
below, but I don't think it should block merging this patch.
Tested-by: Grant Likely <grant.likely at secretlab.ca>
> ---
> drivers/tty/serial/amba-pl011.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
> index 7e01399..4ed35c5 100644
> --- a/drivers/tty/serial/amba-pl011.c
> +++ b/drivers/tty/serial/amba-pl011.c
> @@ -1930,10 +1930,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
> goto unmap;
> }
>
> - /* Ensure interrupts from this UART are masked and cleared */
> - writew(0, uap->port.membase + UART011_IMSC);
> - writew(0xffff, uap->port.membase + UART011_ICR);
> -
> uap->vendor = vendor;
> uap->lcrh_rx = vendor->lcrh_rx;
> uap->lcrh_tx = vendor->lcrh_tx;
> @@ -1951,6 +1947,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
> uap->port.line = i;
> pl011_dma_probe(uap);
>
> + /* Ensure interrupts from this UART are masked and cleared */
> + writew(0, uap->port.membase + UART011_IMSC);
> + writew(0xffff, uap->port.membase + UART011_ICR);
> +
Is it correct to move the interrupt clearing below the
pl011_dma_probe() call? I've tested the fix with the interrupt
clearing both above and below the pl011_dma_probe() call and versatile
qemu boots in both cases.
g.
More information about the linux-arm-kernel
mailing list