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@chris-wilson.co.uk Cc: Christian König christian.koenig@amd.com
Reviewed-by: Christian König christian.koenig@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; };