slavio_timer: avoid structure holes spotted by pahole
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: Blue Swirl <blauwirbel@gmail.com>
			
			
This commit is contained in:
		
							parent
							
								
									94ac5cd20c
								
							
						
					
					
						commit
						f90074f493
					
				| 
						 | 
				
			
			@ -48,16 +48,16 @@ typedef struct CPUTimerState {
 | 
			
		|||
    qemu_irq irq;
 | 
			
		||||
    ptimer_state *timer;
 | 
			
		||||
    uint32_t count, counthigh, reached;
 | 
			
		||||
    uint64_t limit;
 | 
			
		||||
    // processor only
 | 
			
		||||
    /* processor only */
 | 
			
		||||
    uint32_t running;
 | 
			
		||||
    uint64_t limit;
 | 
			
		||||
} CPUTimerState;
 | 
			
		||||
 | 
			
		||||
typedef struct SLAVIO_TIMERState {
 | 
			
		||||
    SysBusDevice busdev;
 | 
			
		||||
    uint32_t num_cpus;
 | 
			
		||||
    CPUTimerState cputimer[MAX_CPUS + 1];
 | 
			
		||||
    uint32_t cputimer_mode;
 | 
			
		||||
    CPUTimerState cputimer[MAX_CPUS + 1];
 | 
			
		||||
} SLAVIO_TIMERState;
 | 
			
		||||
 | 
			
		||||
typedef struct TimerContext {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue