This is a RFC/WIP patch which just adds the interface and lockdep annotation without any actual implementation. Signed-off-by: Christian König <christian.koenig@xxxxxxx> --- drivers/dma-buf/dma-resv.c | 18 ++++++++++++++++++ include/linux/dma-resv.h | 1 + 2 files changed, 19 insertions(+) diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c index 6ddbeb5dfbf6..e0305424957b 100644 --- a/drivers/dma-buf/dma-resv.c +++ b/drivers/dma-buf/dma-resv.c @@ -681,3 +681,21 @@ bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all) return ret; } EXPORT_SYMBOL_GPL(dma_resv_test_signaled_rcu); + +/** + * dma_resv_sync_user_fence - block for user fences to signal + * + * @obj: The DMA resv object with the user fence attached + * + * To make sure we have proper synchronization between accesses block for user + * fences before starting a dma_fence based operation on the buffer. + */ +int dma_resv_sync_user_fence(struct dma_resv *obj) +{ + might_fault(); + + /* TODO: Actually come up with an implementation for this! */ + + return 0; +} +EXPORT_SYMBOL_GPL(dma_resv_sync_user_fence); diff --git a/include/linux/dma-resv.h b/include/linux/dma-resv.h index d44a77e8a7e3..c525a36be900 100644 --- a/include/linux/dma-resv.h +++ b/include/linux/dma-resv.h @@ -289,5 +289,6 @@ long dma_resv_wait_timeout_rcu(struct dma_resv *obj, bool wait_all, bool intr, unsigned long timeout); bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all); +int dma_resv_sync_user_fence(struct dma_resv *obj); #endif /* _LINUX_RESERVATION_H */ -- 2.25.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel