On Thu, Jul 20, 2023 at 02:30:08AM -0400, Michael S. Tsirkin wrote: > On Thu, Jul 20, 2023 at 08:25:25AM +0200, Christoph Hellwig wrote: > > On Thu, Jul 20, 2023 at 02:21:05AM -0400, Michael S. Tsirkin wrote: > > > On Thu, Jul 20, 2023 at 08:07:42AM +0200, Christoph Hellwig wrote: > > > > On Wed, Jul 19, 2023 at 06:15:59AM -0400, Michael S. Tsirkin wrote: > > > > > A recent patchset highlighted to me that DMA_ATTR_SKIP_CPU_SYNC > > > > > might be easily misunderstood. > > > > > > > > .. just curious: what patchset is that? DMA_ATTR_SKIP_CPU_SYNC is > > > > often a bad idea and all users probably could use a really good > > > > audit.. > > > > > > Message-Id: <20230710034237.12391-1-xuanzhuo@xxxxxxxxxxxxxxxxx> > > > > Do you have an actual link? > > sure, they are not hard to generate ;) > > https://lore.kernel.org/all/20230710034237.12391-11-xuanzhuo%40linux.alibaba.com actually there's a new version https://lore.kernel.org/all/20230719040422.126357-11-xuanzhuo%40linux.alibaba.com you can see it does map, sync, unmap unmap immediately after sync seems to be exactly the use case for DMA_ATTR_SKIP_CPU_SYNC. > > > > > > > > > Looks like there's really little else can be done: there's a > > > shared page we allow DMA into, so we sync periodically. > > > Then when we unmap we really do not need that data > > > synced again. > > > > > > What exactly is wrong with this? > > > > A "shared" page without ownership can't work with the streaming > > DMA API (dma_map_*) at all. You need to use dma_alloc_coherent > > so that it is mapped uncached. > > Hmm confused. Based on both documentation and code I think this works: > > dma_map > dma_sync > dma_sync > dma_sync > dma_sync > dma_unmap(DMA_ATTR_SKIP_CPU_SYNC) > > right? > > -- > MST