qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 09/11] fdc: avoid structure holes spotted by pahole


From: Blue Swirl
Subject: [Qemu-devel] [PATCH 09/11] fdc: avoid structure holes spotted by pahole
Date: Sun, 7 Aug 2011 21:01:03 +0000

Edited report from pahole on amd64 host:
struct FDCtrl {
        uint8_t                    version;              /*     0     1 */

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

        qemu_irq                   irq;                  /*     8     8 */
        int                        dma_chann;            /*    16     4 */

        /* XXX 4 bytes hole, try to pack */
...
        uint8_t                    status2;              /*    42     1 */

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

        uint8_t *                  fifo;                 /*    48     8 */
...
        uint8_t                    pwrd;                 /*    76     1 */

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

        int                        sun4m;                /*    80     4 */
        uint8_t                    num_floppies;         /*    84     1 */

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

        FDrive                     drives[2];            /*    88    64 */
        /* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
        int                        reset_sensei;         /*   152     4 */

        /* size: 160, cachelines: 3 */
        /* sum members: 134, holes: 5, sum holes: 22 */
        /* padding: 4 */
        /* last cacheline: 32 bytes */
};      /* definitions: 1 */

Fix by rearranging the structure to avoid padding.

Signed-off-by: Blue Swirl <address@hidden>
---
 hw/fdc.c |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/hw/fdc.c b/hw/fdc.c
index edf0360..580b657 100644
--- a/hw/fdc.c
+++ b/hw/fdc.c
@@ -374,13 +374,13 @@ enum {
 #define FD_FORMAT_CMD(state) ((state) & FD_STATE_FORMAT)

 struct FDCtrl {
-    /* Controller's identification */
-    uint8_t version;
-    /* HW */
     qemu_irq irq;
-    int dma_chann;
     /* Controller state */
     QEMUTimer *result_timer;
+    int dma_chann;
+    /* Controller's identification */
+    uint8_t version;
+    /* HW */
     uint8_t sra;
     uint8_t srb;
     uint8_t dor;
@@ -401,21 +401,21 @@ struct FDCtrl {
     uint8_t data_dir;
     uint8_t eot; /* last wanted sector */
     /* States kept only to be returned back */
-    /* Timers state */
-    uint8_t timer0;
-    uint8_t timer1;
     /* precompensation */
     uint8_t precomp_trk;
     uint8_t config;
     uint8_t lock;
     /* Power down config (also with status regB access mode */
     uint8_t pwrd;
-    /* Sun4m quirks? */
-    int sun4m;
     /* Floppy drives */
     uint8_t num_floppies;
+    /* Sun4m quirks? */
+    int sun4m;
     FDrive drives[MAX_FD];
     int reset_sensei;
+    /* Timers state */
+    uint8_t timer0;
+    uint8_t timer1;
 };

 typedef struct FDCtrlSysBus {
-- 
1.6.2.4

Attachment: 0009-fdc-avoid-structure-holes-spotted-by-pahole.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]