On 04/12/2016 10:03 AM, Sebastian Andrzej Siewior wrote: > On 04/11/2016 10:10 PM, Peter Hurley wrote: >> On 04/11/2016 11:31 AM, Sebastian Andrzej Siewior wrote: >>> On 04/11/2016 07:53 PM, Peter Hurley wrote: >>>> On 04/11/2016 01:18 AM, John Ogness wrote: >>>>> On 2016-04-05, Peter Hurley <peter@xxxxxxxxxxxxxxxxxx> wrote: >>>>>> On 03/31/2016 01:41 AM, John Ogness wrote: >>>>>>> It has been observed that the TX-DMA can stall >>>>>> >>>>>> Does this happen on any other OMAP part besides am335x? >>>>>> I looked back over the LKML history of this and didn't see >>>>>> any other design implicated in this problem. >>>>> >>>>> I just ran the tests again using 4.6-rc2. I am able to reproduce the >>>>> dma-tx stall with am335x/edma and dra7/sdma. >>>> >>>> I thought we already established sdma was not to be used since >>>> the hardware does not actually support pausing without data loss. >>> >>> This workaround was not invented for sdma but for edma (with am335x). >> >> According to John above, dra7/sdma requires this workaround. > > It was reported by Frans Klaver against am335x > http://lkml.kernel.org/r/20140908183353.GB4686@ci00147.xsens-tech.local > > and I managed to reproduce this with his yocto image on dra7 and am335x: > http://lkml.kernel.org/r/20140921204100.GA10111@xxxxxxxxxxxxx [...] >> - hangs changing some unknown register if tx dma in progress >> (ie., this termios change workaround) > > I think some registers are the baud-rate registers which pause engine. Let's back up here and focus on just this problem for now. Since this is observable on dra7/sdma, then it's not related to the OMAP_DMA_TX_KICK problem. IOW, dropping tx dma support for am335x does not make this go away, which is what I was asking. Now, if the DLL/DLH/MDR1 register writes are causing dma to stall, then skipping those if they're unchanged should fix this, and then pause/terminating in-progress DMA if any of these registers are being written would be acceptable since some data loss is to be expected when changing the baud rate without waiting. -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html