Commit b28e0506fafd9c987bba7a6a71ea02a37fcabdea
1 parent
b7392d2247
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
virtio_ring: document alignment requirements
Host needs to know vring element alignment requirements: simply doing alignof on structures doesn't work reliably: on some platforms gcc has alignof(uint32_t) == 2. Add macros for alignment as specified in virtio 1.0 cs01, export them to userspace as well. Acked-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Showing 1 changed file with 7 additions and 0 deletions Side-by-side Diff
include/uapi/linux/virtio_ring.h
... | ... | @@ -101,6 +101,13 @@ |
101 | 101 | struct vring_used *used; |
102 | 102 | }; |
103 | 103 | |
104 | +/* Alignment requirements for vring elements. | |
105 | + * When using pre-virtio 1.0 layout, these fall out naturally. | |
106 | + */ | |
107 | +#define VRING_AVAIL_ALIGN_SIZE 2 | |
108 | +#define VRING_USED_ALIGN_SIZE 4 | |
109 | +#define VRING_DESC_ALIGN_SIZE 16 | |
110 | + | |
104 | 111 | /* The standard layout for the ring is a continuous chunk of memory which looks |
105 | 112 | * like this. We assume num is a power of 2. |
106 | 113 | * |