On Tue, Jul 30, 2019 at 9:29 PM Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Tue, Jul 30, 2019 at 2:15 PM <guoren@xxxxxxxxxx> wrote: > > > > From: Guo Ren <ren_guo@xxxxxxxxx> > > > > If arch didn't define dma_r/wmb(), linux will use w/rmb instead. Csky > > use bar.xxx to implement mb() and that will cause problem when sync data > > with dma device, becasue bar.xxx couldn't guarantee bus transactions > > finished at outside bus level. We must use sync.s instead of bar.xxx for > > dma data synchronization and it will guarantee retirement after getting > > the bus bresponse. > > > > Signed-off-by: Guo Ren <ren_guo@xxxxxxxxx> > > This change looks good to me, but I think your regular barriers > (mb, rmb, wmb) are still wrong: These are meant to be the superset > of dma_{r,w}mb and smp_{,r,w}mb, and synchronize > against both SMP and DMA interactions. > > I suspect you can drop the '.s' for non-SMP builds. What I don't > see is whether you might need to add '.i' for dma_wmb() or > dma_rmb(). > > Arnd -- Best Regards Guo Ren ML: https://lore.kernel.org/linux-csky/