On Saturday, February 18th, 2023 at 03:10, Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> wrote: > > > Group some variables based on their sizes to reduce hole and avoid padding. > On x86_64, this shrinks the size of 'struct virtqueue' > from 72 to 68 bytes. > > It saves a few bytes of memory. > > Signed-off-by: Christophe JAILLET christophe.jaillet@xxxxxxxxxx > > --- > Using pahole > > Before: > ====== > struct virtqueue { > struct list_head list; /* 0 16 */ > void (*callback)(struct virtqueue ); / 16 8 / > const char * name; / 24 8 / > struct virtio_device * vdev; / 32 8 / > unsigned int index; / 40 4 / > unsigned int num_free; / 44 4 / > unsigned int num_max; / 48 4 / > > / XXX 4 bytes hole, try to pack / > > void * priv; / 56 8 / > / --- cacheline 1 boundary (64 bytes) --- / > bool reset; / 64 1 / > > / size: 72, cachelines: 2, members: 9 / > / sum members: 61, holes: 1, sum holes: 4 / > / padding: 7 / > / last cacheline: 8 bytes / > }; > > After: > ===== > struct virtqueue { > struct list_head list; / 0 16 */ > void (*callback)(struct virtqueue ); / 16 8 / > const char * name; / 24 8 / > struct virtio_device * vdev; / 32 8 / > unsigned int index; / 40 4 / > unsigned int num_free; / 44 4 / > unsigned int num_max; / 48 4 / > bool reset; / 52 1 / > > / XXX 3 bytes hole, try to pack / > > void * priv; / 56 8 / > > / size: 64, cachelines: 1, members: 9 / > / sum members: 61, holes: 1, sum holes: 3 */ > }; > --- > include/linux/virtio.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/virtio.h b/include/linux/virtio.h > index 6ac2655500dc..9439ae898310 100644 > --- a/include/linux/virtio.h > +++ b/include/linux/virtio.h > @@ -35,8 +35,8 @@ struct virtqueue { > unsigned int index; > unsigned int num_free; > unsigned int num_max; > - void *priv; > bool reset; > + void *priv; > }; > > int virtqueue_add_outbuf(struct virtqueue *vq, > -- > 2.34.1 This will shrink the struct size on 32 bit archs too. Acked-by: Peter Lafreniere <peter@xxxxxxxx> - Peter