• B
    slavio_timer: avoid structure holes spotted by pahole · f90074f4
    Blue Swirl 提交于
    Report from pahole on amd64 host:
    struct SLAVIO_TIMERState {
    	SysBusDevice               busdev;               /*     0  5648 */
    	/* --- cacheline 88 boundary (5632 bytes) was 16 bytes ago --- */
    	uint32_t                   num_cpus;             /*  5648     4 */
    
    	/* XXX 4 bytes hole, try to pack */
    
    	CPUTimerState              cputimer[17];         /*  5656   816 */
    	/* --- cacheline 101 boundary (6464 bytes) was 8 bytes ago --- */
    	uint32_t                   cputimer_mode;        /*  6472     4 */
    
    	/* size: 6480, cachelines: 102 */
    	/* sum members: 6472, holes: 1, sum holes: 4 */
    	/* padding: 4 */
    	/* last cacheline: 16 bytes */
    };	/* definitions: 1 */
    
    struct CPUTimerState {
    	qemu_irq                   irq;                  /*     0     8 */
    	ptimer_state *             timer;                /*     8     8 */
    	uint32_t                   count;                /*    16     4 */
    	uint32_t                   counthigh;            /*    20     4 */
    	uint32_t                   reached;              /*    24     4 */
    
    	/* XXX 4 bytes hole, try to pack */
    
    	uint64_t                   limit;                /*    32     8 */
    	uint32_t                   running;              /*    40     4 */
    
    	/* size: 48, cachelines: 1 */
    	/* sum members: 40, holes: 1, sum holes: 4 */
    	/* padding: 4 */
    	/* last cacheline: 48 bytes */
    };	/* definitions: 1 */
    
    Fix by rearranging the structures to avoid padding.
    Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
    f90074f4
slavio_timer.c 13.7 KB