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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxx>
> Cc: Christian König <christian.koenig@xxxxxxx>

Reviewed-by: Christian König <christian.koenig@xxxxxxx>

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;
>   };
>   

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux