From: Peter Hurley <peter@hurleysoftware.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Vinod Koul <vinod.koul@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
dmaengine <dmaengine@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Puustinen, Ismo" <ismo.puustinen@intel.com>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
"linux-serial@vger.kernel.org" <linux-serial@vger.kernel.org>
Subject: Re: [PATCH v1 06/12] serial: 8250_dma: stop ongoing RX DMA on exception
Date: Fri, 8 Apr 2016 16:20:58 -0700 [thread overview]
Message-ID: <57083CDA.4090709@hurleysoftware.com> (raw)
In-Reply-To: <CAHp75VdYEEwBx+G=2D_q5M1DpUWsyHn9JZbYhb4GQeJNJwv9yw@mail.gmail.com>
On 04/08/2016 01:07 AM, Andy Shevchenko wrote:
> On Fri, Apr 8, 2016 at 2:54 AM, Peter Hurley <peter@hurleysoftware.com> wrote:
>> On 04/07/2016 01:37 PM, Andy Shevchenko wrote:
>>> If we get an exeption interrupt. i.e. UART_IIR_RLSI, stop any ongoing RX DMA
>>> transfer otherwise it might generates more spurious interrupts and make port
>>> unavailable anymore.
>>
>> Then how to know which rx byte the error is for if dma continues anyway?
>> What if there are multiple error bytes?
>
> And how should it work?
> We get an interrupt during DMA, if we don't stop DMA it will be racy
> with direct readings.
It makes sense to me that the ongoing DMA needs paused, flushed & terminated,
but the UART should have already aborted the DMA at the first error byte,
so it doesn't make sense to me that the DMA hardware went sideways.
Have you verified that the actual byte in error is reported as the frame/parity
byte and that error-free data is unmangled? Like with a data pattern and a logic
analyzer?
>>
>>
>>> As has been seen on Intel Broxton system:
>>
>> This system shouldn't be setup for UART DMA imo.
>
> Same approach is done in 8250_omap.
Well, omap8250 has totally different (and possibly unnecessary) rx dma flow.
During the development of the omap8250 driver, it was discovered that the
normal 8250 rx dma flow didn't work reliably on OMAP; ie., the rx dma wouldn't
start once rx uart interrupt had already happened.
*So omap8250 sets up rx dma before any data has been received*
That's the dma that is cancelled when an RLSI interrupt is received;
on OMAP the residue is always 0.
Well, it turns out that the omap8250 rx dma flow *may* be limited to only
1 specific design, the am335x, which has a bunch of other dma issues, with
both tx and rx dma. So all that omap8250 dma handling might be going
away anyway.
IOW, omap8250 is a terrible dma model; do not use.
[Granted the current model needs some work as well; eg., using ping-pong
dma buffers to weather dmaengine descriptor completion latency).
Regards,
Peter Hurley
next prev parent reply other threads:[~2016-04-08 23:20 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-07 20:37 [PATCH v1 00/12] serial: 8250: split LPSS to 8250_lpss, enable DMA on Quark Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 01/12] dmaengine: dw: keep copy of custom slave config in dwc Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 02/12] dmaengine: dw: provide probe(), remove() stubs for users Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 03/12] dmaengine: dw: set polarity of handshake interface Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 04/12] dmaengine: dw: override LLP support if asked in platform data Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 05/12] serial: 8250_dma: switch to new dmaengine_terminate_* API Andy Shevchenko
2016-04-07 23:55 ` Peter Hurley
2016-04-07 20:37 ` [PATCH v1 06/12] serial: 8250_dma: stop ongoing RX DMA on exception Andy Shevchenko
2016-04-07 23:54 ` Peter Hurley
2016-04-08 8:07 ` Andy Shevchenko
2016-04-08 23:20 ` Peter Hurley [this message]
2016-04-07 20:37 ` [PATCH v1 07/12] serial: 8250_dma: adjust DMA address of the UART Andy Shevchenko
2016-04-08 0:24 ` Peter Hurley
2016-04-07 20:37 ` [PATCH v1 08/12] serial: 8250: enable AFE on ports where FIFO is 16 bytes Andy Shevchenko
2016-04-07 23:43 ` Peter Hurley
2016-04-07 20:37 ` [PATCH v1 09/12] serial: 8250_lpss: split LPSS driver to separate module Andy Shevchenko
2016-04-08 1:42 ` Peter Hurley
2016-04-08 8:17 ` Andy Shevchenko
2016-04-08 22:44 ` Peter Hurley
2016-04-11 13:09 ` Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 10/12] serial: 8250_lpss: move Quark code from PCI driver Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 11/12] serial: 8250_lpss: enable MSI for Intel Quark Andy Shevchenko
2016-04-07 20:37 ` [PATCH v1 12/12] serial: 8250_lpss: enable DMA on Intel Quark UART Andy Shevchenko
2016-04-11 15:33 ` Bryan O'Donoghue
2016-04-11 15:51 ` Andy Shevchenko
2016-04-11 16:05 ` Andy Shevchenko
2016-04-12 16:25 ` Bryan O'Donoghue
2016-04-12 16:50 ` Andy Shevchenko
2016-04-13 11:22 ` Bryan O'Donoghue
2016-04-13 12:03 ` Andy Shevchenko
2016-04-13 14:34 ` Bryan O'Donoghue
2016-04-13 14:48 ` Andy Shevchenko
2016-04-13 15:24 ` Bryan O'Donoghue
2016-04-09 16:53 ` [PATCH v1 00/12] serial: 8250: split LPSS to 8250_lpss, enable DMA on Quark Bryan O'Donoghue
2016-04-09 17:48 ` Andy Shevchenko
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=57083CDA.4090709@hurleysoftware.com \
--to=peter@hurleysoftware.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=andy.shevchenko@gmail.com \
--cc=dmaengine@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=ismo.puustinen@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=vinod.koul@intel.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).