From: Scott Wood <scottwood@freescale.com>
To: Kumar Gala <galak@kernel.crashing.org>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>,
linuxppc-dev@lists.ozlabs.org, linux-serial@vger.kernel.org
Subject: Re: [PATCH] 8250: add workaround for MPC8[356]xx UART break IRQ storm
Date: Fri, 26 Feb 2010 14:23:35 -0600 [thread overview]
Message-ID: <20100226202335.GA28844@loki.buserror.net> (raw)
In-Reply-To: <EB2B2912-24C3-46C9-B894-0A84D593570F@kernel.crashing.org>
On Fri, Feb 26, 2010 at 01:42:39PM -0600, Kumar Gala wrote:
>
> On Feb 26, 2010, at 1:25 PM, Paul Gortmaker wrote:
>
> > Sending a break on the SOC UARTs found in some MPC83xx/85xx/86xx
> > chips seems to cause a short lived IRQ storm (/proc/interrupts
> > typically shows somewhere between 300 and 1500 events). Unfortunately
> > this renders SysRQ over the serial console completely inoperable.
> > Testing with obvious things like ACKing the event doesn't seem to
> > change anything vs. a completely dumb approach of just ignoring
> > it and waiting for it to stop, so that is what is implemented here.
> >
> > Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> > ---
> >
> > This is a refresh of a patch I'd done earlier -- I've tried to make
> > the bug support as generic as possible to minimize having board
> > specific ifdef crap in 8250.c -- any suggestions on how to further
> > improve it are welcome.
> >
> > drivers/serial/8250.c | 6 ++++++
> > drivers/serial/8250.h | 20 ++++++++++++++++++++
> > drivers/serial/Kconfig | 14 ++++++++++++++
> > include/linux/serial_reg.h | 2 ++
> > 4 files changed, 42 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
> > index e9b15c3..850b0e9 100644
> > --- a/drivers/serial/8250.c
> > +++ b/drivers/serial/8250.c
> > @@ -1531,6 +1531,11 @@ static void serial8250_handle_port(struct uart_8250_port *up)
> >
> > status = serial_inp(up, UART_LSR);
> >
> > + if ((up->bugs & UART_BUG_PPC) && (status == UART_LSR_RFE_ERROR_BITS)) {
> > + spin_unlock_irqrestore(&up->port.lock, flags);
> > + return;
> > + }
Will LSR always be 0xf1 when this problem hits? At least the transmit bits
shouldn't be relevant.
This has been listed as an erratum in some of the newer chips (e.g.
mpc8568).
The suggested as workaround is to, upon seeing a break condition:
- read RBR
- delay at least one character period
- read RBR again
If I'm interpreting this correctly, it could be implemented by doing the
normal break handling on the first interrupt, plus setting a flag so that the
next interrupt simply reads RBR, clears the flag, and returns, without ever
reading LSR.
-Scott
next prev parent reply other threads:[~2010-02-26 20:23 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-26 19:25 [PATCH] 8250: add workaround for MPC8[356]xx UART break IRQ storm Paul Gortmaker
2010-02-26 19:42 ` Kumar Gala
2010-02-26 20:21 ` Paul Gortmaker
2010-02-26 20:23 ` Scott Wood [this message]
2010-03-01 21:23 ` Paul Gortmaker
2010-03-01 23:03 ` vb
2010-03-02 16:27 ` Paul Gortmaker
2010-03-02 21:21 ` vb
2011-11-24 8:14 ` Kumar Gala
2011-11-24 15:26 ` Paul Gortmaker
2011-11-24 19:07 ` Kumar Gala
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100226202335.GA28844@loki.buserror.net \
--to=scottwood@freescale.com \
--cc=galak@kernel.crashing.org \
--cc=linux-serial@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=paul.gortmaker@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).