On Mon, Apr 04, 2022 at 12:44:30AM -0700, Christoph Hellwig wrote: > On Mon, Apr 04, 2022 at 03:19:48PM +0900, Masahiro Yamada wrote: > > vr->num = num; > > vr->desc = p; > > vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc)); > > - vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) > > + vr->used = (void *)(((__kernel_uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) > > + align-1) & ~(align - 1)); > > This really does not look like it should be in a uapi header to start > with. It's a way to document a complex structure layout of virtio 0.9. It's ugly but it's been like this for years. For virtio 1.0 we moved away from this but a bunch of tools keep using legacy. -- MST