[PATCH] KVM: Reorder fields in 'struct kvm_mmu_memory_cache'

From: Christophe JAILLET
Date: Fri Feb 17 2023 - 03:02:55 EST


Group some variables based on their sizes to reduce hole and avoid padding.
On x86_64, this shrinks the size from 40 to 32 bytes.

Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
---
Using pahole

Before:
======
struct kvm_mmu_memory_cache {
int nobjs; /* 0 4 */
gfp_t gfp_zero; /* 4 4 */
gfp_t gfp_custom; /* 8 4 */

/* XXX 4 bytes hole, try to pack */

struct kmem_cache * kmem_cache; /* 16 8 */
int capacity; /* 24 4 */

/* XXX 4 bytes hole, try to pack */

void * * objects; /* 32 8 */

/* size: 40, cachelines: 1, members: 6 */
/* sum members: 32, holes: 2, sum holes: 8 */
/* last cacheline: 40 bytes */
};
---
include/linux/kvm_types.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/kvm_types.h b/include/linux/kvm_types.h
index 2728d49bbdf6..76af8425dbc6 100644
--- a/include/linux/kvm_types.h
+++ b/include/linux/kvm_types.h
@@ -94,8 +94,8 @@ struct kvm_mmu_memory_cache {
int nobjs;
gfp_t gfp_zero;
gfp_t gfp_custom;
- struct kmem_cache *kmem_cache;
int capacity;
+ struct kmem_cache *kmem_cache;
void **objects;
};
#endif
--
2.34.1