[dev][virtio] remove some extraneous __PACKED attributes

From working with -Wpacked its clear that some of the virtio
structures are overly packed and result in bad codegen on particular
architectures such as riscv. Roll back from using packed but
statically assert that the sizes are correct for some future arch
where things naturally pack differently.
This commit is contained in:
Travis Geiselbrecht
2020-07-25 20:04:21 -07:00
parent ba530722f5
commit 1272d037aa
3 changed files with 9 additions and 5 deletions

View File

@@ -35,13 +35,15 @@ struct virtio_blk_config {
uint8_t sectors;
} geometry;
uint32_t blk_size;
} __PACKED;
};
STATIC_ASSERT(sizeof(struct virtio_blk_config) == 24);
struct virtio_blk_req {
uint32_t type;
uint32_t ioprio;
uint64_t sector;
} __PACKED;
};
STATIC_ASSERT(sizeof(struct virtio_blk_req) == 16);
#define VIRTIO_BLK_F_BARRIER (1<<0)
#define VIRTIO_BLK_F_SIZE_MAX (1<<1)

View File

@@ -27,7 +27,8 @@ struct virtio_net_config {
uint8_t mac[6];
uint16_t status;
uint16_t max_virtqueue_pairs;
} __PACKED;
};
STATIC_ASSERT(sizeof(struct virtio_net_config) == 10);
struct virtio_net_hdr {
uint8_t flags;
@@ -37,7 +38,8 @@ struct virtio_net_hdr {
uint16_t csum_start;
uint16_t csum_offset;
uint16_t num_buffers; // unused in tx
} __PACKED;
};
STATIC_ASSERT(sizeof(struct virtio_net_hdr) == 12);
#define VIRTIO_NET_F_CSUM (1<<0)
#define VIRTIO_NET_F_GUEST_CSUM (1<<1)