On Tue, Dec 07, 2021 at 01:34:08PM +0100, Christian König wrote: > Add an usage for submissions independent of implicit sync but still > interesting for memory management. > > Signed-off-by: Christian König <christian.koenig@xxxxxxx> Focusing on the kerneldoc first to get semantics agreed. > diff --git a/include/linux/dma-resv.h b/include/linux/dma-resv.h > index 29d799991496..07ae5b00c1fa 100644 > --- a/include/linux/dma-resv.h > +++ b/include/linux/dma-resv.h > @@ -55,7 +55,7 @@ struct dma_resv_list; > * This enum describes the different use cases for a dma_resv object and > * controls which fences are returned when queried. > * > - * An important fact is that there is the order KERNEL<WRITE<READ and > + * An important fact is that there is the order KERNEL<WRITE<READ<BOOKKEEP and > * when the dma_resv object is asked for fences for one use case the fences > * for the lower use case are returned as well. > * > @@ -93,6 +93,22 @@ enum dma_resv_usage { > * an implicit read dependency. > */ > DMA_RESV_USAGE_READ, > + > + /** > + * @DMA_RESV_USAGE_BOOKKEEP: No implicit sync. > + * > + * This should be used by submissions which don't want to participate in > + * implicit synchronization. Uh we might still have a disagreement, because that isn't really what drivers which added opt-in implicit sync have done thus far. Minimally we need a note that some drivers also use _READ for this. > + * > + * The most common case are submissions with explicit synchronization, > + * but also things like preemption fences as well as page table updates > + * might use this. > + * > + * The kernel memory management *always* need to wait for those fences > + * before moving or freeing the resource protected by the dma_resv > + * object. Yeah this is the comment I wanted to see for READ, and which now is in bookkeeping (where it's correct in the end). I think we still should have something in the READ comment (and here) explaining that there could very well be writes hiding behind this, and that the kernel cannot assume anything about what's going on in general (maybe some drivers enforce read/write through command parsers). Also all the text in dma_buf.resv needs to be updated to use the right constants instead of words. -Daniel > + */ > + DMA_RESV_USAGE_BOOKKEEP > }; > > /** > -- > 2.25.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch