dma-fence: Shrink size of struct dma_fence
authorChris Wilson <chris@chris-wilson.co.uk>
Sat, 17 Aug 2019 14:47:33 +0000 (15:47 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 17 Aug 2019 17:02:49 +0000 (18:02 +0100)
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>
Link: https://patchwork.freedesktop.org/patch/msgid/20190817144736.7826-3-chris@chris-wilson.co.uk
include/linux/dma-fence.h

index 404aa748eda66d7bf46df8599bdfd274eee6bd4f..2ce4d877d33ef7cd7c501c06fd026c55d0f2e336 100644 (file)
@@ -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;
 };