Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1447981
| From | zhangfei <zhangfei.gao@linaro.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api |
| Date | 2016-07-21 18:10 +0200 |
| Message-ID | <rXoHT-1iu-9@gated-at.bofh.it> (permalink) |
| References | <rXdjr-25c-3@gated-at.bofh.it> <rXdjs-25c-17@gated-at.bofh.it> <rXdMt-2xS-1@gated-at.bofh.it> <rXeIy-38y-11@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On 07/21/2016 01:22 PM, John Stultz wrote: > On Wed, Jul 20, 2016 at 9:26 PM, zhangfei <zhangfei.gao@linaro.org> wrote: >> >> >> On 07/21/2016 11:53 AM, John Stultz wrote: >>> >>> After lots of debugging on an occasional DMA ERR issue, I realized >>> that the desc structures which we point the dma hardware are being >>> allocated out of regular memory. This means when we fill the desc >>> structures, that data doesn't always get flushed out to memory by >>> the time we start the dma transfer, resulting in the dma engine getting >>> some null values, resulting in a DMA ERR on the first irq. >> >> >> How about using wmb() flush before start dma to sync desc? > > So I'm not going to pretend to be an expert here, but my understanding > is that wmb() syncrhonizes cpu write ordering operations across cpus, > so the cpus see all the changes before the wmb() before they see any > changes after. But I'm not sure what effect wmb() has across cpu > cache to device ordering. I don't think it works as a cache flush to > memory. > > Andy's patch introducing the cyclic support actually had a wmb() in it > that I removed as I couldn't understand clearly why it was there (and > there wasn't a comment explaining, as required by checkpatch :). But > even with that wmb(), the DMA ERR was still seen. > > Only with these two new changes have I gotten to the point where I > can't seem to trigger the DMA error. > Yes, you are right. Have double checked, we have to use non-cached memory here as dma descriptor, instead of cached memory from kzalloc. And barrier (wmb or writel) is used to ensure descriptor are written before start dma. Though we start dma much later in issue_pending -> tasklet, so the chance is low. Thanks
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 0/7 v3] K3DMA fixes for HiKey HDMI audio John Stultz <john.stultz@linaro.org> - 2016-07-21 06:00 +0200
[PATCH 4/7] k3dma: Add cyclic mode for audio John Stultz <john.stultz@linaro.org> - 2016-07-21 06:00 +0200
Re: [PATCH 4/7] k3dma: Add cyclic mode for audio Vinod Koul <vinod.koul@intel.com> - 2016-07-24 09:30 +0200
[PATCH 7/7] Kconfig: Allow k3dma driver to be selected for more then HISI3xx platforms John Stultz <john.stultz@linaro.org> - 2016-07-21 06:00 +0200
[PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api John Stultz <john.stultz@linaro.org> - 2016-07-21 06:00 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api zhangfei <zhangfei.gao@linaro.org> - 2016-07-21 06:30 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api John Stultz <john.stultz@linaro.org> - 2016-07-21 07:30 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api Andy Green <andy@warmcat.com> - 2016-07-21 08:30 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api Mark Brown <broonie@kernel.org> - 2016-07-21 12:50 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api Andy Green <andy@warmcat.com> - 2016-07-21 15:20 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api John Stultz <john.stultz@linaro.org> - 2016-07-21 18:20 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api Andy Green <andy@warmcat.com> - 2016-07-21 22:00 +0200
Re: [PATCH 6/7] k3dma: Fix occasional DMA ERR issue by using proper dma api zhangfei <zhangfei.gao@linaro.org> - 2016-07-21 18:10 +0200
csiph-web