On Sat, Apr 21, 2018 at 10:42:47PM +0100, James Bottomley wrote: > Well, this is wrong: you just made every 32 bit parisc system > unnecessarily use non-coherent. We actually only have a small small > set of non-coherent systems. The pxcs and pcxt systems (which are > about 99% of the user base) can use coherent dma ops. The problem > seems to be in your new world you only have one dma_noncoherent_ops > pointer ... we definitely need two on parisc, so whether > arch_dma_cache_sync is present or not needs to be dynamic not config > defined. The changelog explicitly mentions merging the two noncoherent implementations, they only differ in the alloc and free callsbacks, and we now runtime switch between them. Before the pcxs and pcxt cases used pcx_dma_ops, and pcxl and pxcl2 used pcxl_dma_ops, now all four use dma_noncoherent_ops and arch_dma_alloc/arch_dma_free branch out to different behavior. Both pcx_dma_ops and pcxl_dma_ops do define the cache_sync method in the existing code, so that isn't the issue. I'll take a deeper look at what sort of behavior change might have been introduced. > > James ---end quoted text---