[PATCH 1/3] dma-fence: Reserve 0 as a special NO_CONTEXT token

Christian König christian.koenig at amd.com
Sat Apr 8 17:49:37 UTC 2017


Am 08.04.2017 um 18:26 schrieb Chris Wilson:
> Reserve 0 for general use a token meaning that the fence doesn't belong
> to an ordered timeline (fence context).

NAK, we kept context allocation cheap to avoid exactly that.

Please elaborate further why it should be necessary now.

Regards,
Christian.

> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Sumit Semwal <sumit.semwal at linaro.org>
> Cc: Gustavo Padovan <gustavo at padovan.org>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: "Christian König" <christian.koenig at amd.com
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> ---
>   drivers/dma-buf/dma-fence.c | 4 +++-
>   include/linux/dma-fence.h   | 2 ++
>   2 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
> index 0918d3f003d6..0646357ea350 100644
> --- a/drivers/dma-buf/dma-fence.c
> +++ b/drivers/dma-buf/dma-fence.c
> @@ -36,8 +36,10 @@ EXPORT_TRACEPOINT_SYMBOL(dma_fence_enable_signal);
>    * fence context, this allows checking if fences belong to the same
>    * context or not. One device can have multiple separate contexts,
>    * and they're used if some engine can run independently of another.
> + *
> + * 0 is excluded and treated as a special DMA_FENCE_NO_CONTEXT.
>    */
> -static atomic64_t dma_fence_context_counter = ATOMIC64_INIT(0);
> +static atomic64_t dma_fence_context_counter = ATOMIC64_INIT(1);
>   
>   /**
>    * dma_fence_context_alloc - allocate an array of fence contexts
> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
> index 6048fa404e57..adfdc7fdd9c3 100644
> --- a/include/linux/dma-fence.h
> +++ b/include/linux/dma-fence.h
> @@ -455,6 +455,8 @@ static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr)
>   	return ret < 0 ? ret : 0;
>   }
>   
> +#define DMA_FENCE_NO_CONTEXT ((u64)0)
> +
>   u64 dma_fence_context_alloc(unsigned num);
>   
>   #define DMA_FENCE_TRACE(f, fmt, args...) \




More information about the dri-devel mailing list