]> git.proxmox.com Git - mirror_qemu.git/commitdiff
slavio_intctl: avoid structure holes spotted by pahole
authorBlue Swirl <blauwirbel@gmail.com>
Sun, 7 Aug 2011 19:06:26 +0000 (19:06 +0000)
committerBlue Swirl <blauwirbel@gmail.com>
Sun, 21 Aug 2011 19:52:31 +0000 (19:52 +0000)
Report from pahole on amd64 host:
struct SLAVIO_INTCTLState {
SysBusDevice               busdev;               /*     0  5648 */
/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
uint32_t                   intregm_pending;      /*  5648     4 */
uint32_t                   intregm_disabled;     /*  5652     4 */
uint32_t                   target_cpu;           /*  5656     4 */

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

qemu_irq                   cpu_irqs[16][16];     /*  5664  2048 */
/* --- cacheline 120 boundary (7680 bytes) was 32 bytes ago --- */
SLAVIO_CPUINTCTLState      slaves[16];           /*  7712   384 */
/* --- cacheline 126 boundary (8064 bytes) was 32 bytes ago --- */

/* size: 8096, cachelines: 127 */
/* sum members: 8092, holes: 1, sum holes: 4 */
/* last cacheline: 32 bytes */
}; /* definitions: 1 */

struct SLAVIO_CPUINTCTLState {
uint32_t                   intreg_pending;       /*     0     4 */

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

struct SLAVIO_INTCTLState * master;              /*     8     8 */
uint32_t                   cpu;                  /*    16     4 */
uint32_t                   irl_out;              /*    20     4 */

/* size: 24, cachelines: 1 */
/* sum members: 20, holes: 1, sum holes: 4 */
/* last cacheline: 24 bytes */
}; /* definitions: 1 */

Fix by rearranging the structures to avoid padding.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
hw/slavio_intctl.c

index a83e5b8272360e6176b7b377c73f3ded51c2e983..329c251845f704ea6ce13bcda614b3e1068f3091 100644 (file)
 struct SLAVIO_INTCTLState;
 
 typedef struct SLAVIO_CPUINTCTLState {
-    uint32_t intreg_pending;
     struct SLAVIO_INTCTLState *master;
+    uint32_t intreg_pending;
     uint32_t cpu;
     uint32_t irl_out;
 } SLAVIO_CPUINTCTLState;
 
 typedef struct SLAVIO_INTCTLState {
     SysBusDevice busdev;
-    uint32_t intregm_pending;
-    uint32_t intregm_disabled;
-    uint32_t target_cpu;
 #ifdef DEBUG_IRQ_COUNT
     uint64_t irq_count[32];
 #endif
     qemu_irq cpu_irqs[MAX_CPUS][MAX_PILS];
     SLAVIO_CPUINTCTLState slaves[MAX_CPUS];
+    uint32_t intregm_pending;
+    uint32_t intregm_disabled;
+    uint32_t target_cpu;
 } SLAVIO_INTCTLState;
 
 #define INTCTL_MAXADDR 0xf