On Wed, May 04, 2022 at 02:22:53PM +0200, Christian König wrote:
Move the code from the inline functions into exported functions.
Signed-off-by: Christian König christian.koenig@amd.com
Didn't check you didn't slip in a typo or so :-)
Acked-by: Daniel Vetter daniel.vetter@ffwll.ch
drivers/dma-buf/Makefile | 2 +- drivers/dma-buf/dma-fence-unwrap.c | 59 ++++++++++++++++++++++++++++++ include/linux/dma-fence-unwrap.h | 52 ++------------------------ 3 files changed, 64 insertions(+), 49 deletions(-) create mode 100644 drivers/dma-buf/dma-fence-unwrap.c
diff --git a/drivers/dma-buf/Makefile b/drivers/dma-buf/Makefile index 4c9eb53ba3f8..70ec901edf2c 100644 --- a/drivers/dma-buf/Makefile +++ b/drivers/dma-buf/Makefile @@ -1,6 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only obj-y := dma-buf.o dma-fence.o dma-fence-array.o dma-fence-chain.o \
dma-resv.o
dma-fence-unwrap.o dma-resv.o
obj-$(CONFIG_DMABUF_HEAPS) += dma-heap.o obj-$(CONFIG_DMABUF_HEAPS) += heaps/ obj-$(CONFIG_SYNC_FILE) += sync_file.o diff --git a/drivers/dma-buf/dma-fence-unwrap.c b/drivers/dma-buf/dma-fence-unwrap.c new file mode 100644 index 000000000000..711be125428c --- /dev/null +++ b/drivers/dma-buf/dma-fence-unwrap.c @@ -0,0 +1,59 @@ +// SPDX-License-Identifier: GPL-2.0-only +/*
- dma-fence-util: misc functions for dma_fence objects
- Copyright (C) 2022 Advanced Micro Devices, Inc.
- Authors:
- Christian König christian.koenig@amd.com
- */
+#include <linux/dma-fence.h> +#include <linux/dma-fence-array.h> +#include <linux/dma-fence-chain.h> +#include <linux/dma-fence-unwrap.h>
+/* Internal helper to start new array iteration, don't use directly */ +static struct dma_fence * +__dma_fence_unwrap_array(struct dma_fence_unwrap *cursor) +{
- cursor->array = dma_fence_chain_contained(cursor->chain);
- cursor->index = 0;
- return dma_fence_array_first(cursor->array);
+}
+/**
- dma_fence_unwrap_first - return the first fence from fence containers
- @head: the entrypoint into the containers
- @cursor: current position inside the containers
- Unwraps potential dma_fence_chain/dma_fence_array containers and return the
- first fence.
- */
+struct dma_fence *dma_fence_unwrap_first(struct dma_fence *head,
struct dma_fence_unwrap *cursor)
+{
- cursor->chain = dma_fence_get(head);
- return __dma_fence_unwrap_array(cursor);
+} +EXPORT_SYMBOL_GPL(dma_fence_unwrap_first);
+/**
- dma_fence_unwrap_next - return the next fence from a fence containers
- @cursor: current position inside the containers
- Continue unwrapping the dma_fence_chain/dma_fence_array containers and return
- the next fence from them.
- */
+struct dma_fence *dma_fence_unwrap_next(struct dma_fence_unwrap *cursor) +{
- struct dma_fence *tmp;
- ++cursor->index;
- tmp = dma_fence_array_next(cursor->array, cursor->index);
- if (tmp)
return tmp;
- cursor->chain = dma_fence_chain_walk(cursor->chain);
- return __dma_fence_unwrap_array(cursor);
+} +EXPORT_SYMBOL_GPL(dma_fence_unwrap_next); diff --git a/include/linux/dma-fence-unwrap.h b/include/linux/dma-fence-unwrap.h index 77e335a1bcac..e7c219da4ed7 100644 --- a/include/linux/dma-fence-unwrap.h +++ b/include/linux/dma-fence-unwrap.h @@ -1,7 +1,5 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /*
- fence-chain: chain fences together in a timeline
- Copyright (C) 2022 Advanced Micro Devices, Inc.
- Authors:
- Christian König christian.koenig@amd.com
@@ -10,8 +8,7 @@ #ifndef __LINUX_DMA_FENCE_UNWRAP_H #define __LINUX_DMA_FENCE_UNWRAP_H -#include <linux/dma-fence-chain.h> -#include <linux/dma-fence-array.h> +struct dma_fence; /**
- struct dma_fence_unwrap - cursor into the container structure
@@ -33,50 +30,9 @@ struct dma_fence_unwrap { unsigned int index; }; -/* Internal helper to start new array iteration, don't use directly */ -static inline struct dma_fence * -__dma_fence_unwrap_array(struct dma_fence_unwrap * cursor) -{
- cursor->array = dma_fence_chain_contained(cursor->chain);
- cursor->index = 0;
- return dma_fence_array_first(cursor->array);
-}
-/**
- dma_fence_unwrap_first - return the first fence from fence containers
- @head: the entrypoint into the containers
- @cursor: current position inside the containers
- Unwraps potential dma_fence_chain/dma_fence_array containers and return the
- first fence.
- */
-static inline struct dma_fence * -dma_fence_unwrap_first(struct dma_fence *head, struct dma_fence_unwrap *cursor) -{
- cursor->chain = dma_fence_get(head);
- return __dma_fence_unwrap_array(cursor);
-}
-/**
- dma_fence_unwrap_next - return the next fence from a fence containers
- @cursor: current position inside the containers
- Continue unwrapping the dma_fence_chain/dma_fence_array containers and return
- the next fence from them.
- */
-static inline struct dma_fence * -dma_fence_unwrap_next(struct dma_fence_unwrap *cursor) -{
- struct dma_fence *tmp;
- ++cursor->index;
- tmp = dma_fence_array_next(cursor->array, cursor->index);
- if (tmp)
return tmp;
- cursor->chain = dma_fence_chain_walk(cursor->chain);
- return __dma_fence_unwrap_array(cursor);
-} +struct dma_fence *dma_fence_unwrap_first(struct dma_fence *head,
struct dma_fence_unwrap *cursor);
+struct dma_fence *dma_fence_unwrap_next(struct dma_fence_unwrap *cursor); /**
- dma_fence_unwrap_for_each - iterate over all fences in containers
-- 2.25.1