[PATCH] dma-buf: Shrink size of struct dma_fence

Koenig, Christian Christian.Koenig at amd.com
Sat Aug 17 11:42:48 UTC 2019


Am 17.08.19 um 13:39 schrieb Chris Wilson:
> Rearrange the couple of 32-bit atomics hidden amongst the field of
> pointers that unnecessarily caused the compiler to insert some padding,
> shrinks the size of the base struct dma_fence from 80 to 72 bytes on
> x86-64.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Christian König <christian.koenig at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

BTW: We could also put the timestamp in the union if we want.

E.g. the cb_list should only be used while the fence is unsignaled, the 
timestamp while it is signaled and the rcu while it is freed.

Would save another 8 bytes, bringing us down to 64.

Christian.

> ---
>   include/linux/dma-fence.h | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
> index 404aa748eda6..2ce4d877d33e 100644
> --- a/include/linux/dma-fence.h
> +++ b/include/linux/dma-fence.h
> @@ -63,7 +63,7 @@ struct dma_fence_cb;
>    * been completed, or never called at all.
>    */
>   struct dma_fence {
> -	struct kref refcount;
> +	spinlock_t *lock;
>   	const struct dma_fence_ops *ops;
>   	/* We clear the callback list on kref_put so that by the time we
>   	 * release the fence it is unused. No one should be adding to the cb_list
> @@ -73,11 +73,11 @@ struct dma_fence {
>   		struct rcu_head rcu;
>   		struct list_head cb_list;
>   	};
> -	spinlock_t *lock;
>   	u64 context;
>   	u64 seqno;
> -	unsigned long flags;
>   	ktime_t timestamp;
> +	unsigned long flags;
> +	struct kref refcount;
>   	int error;
>   };
>   



More information about the dri-devel mailing list