On Mon, Apr 4, 2022 at 9:44 AM Christoph Hellwig <hch@xxxxxxxxxxxxx> 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. The header is shared between kernel and other projects using virtio, such as qemu and any boot loaders booting from virtio devices. It's not technically a /kernel/ ABI, but it is an ABI and for practical reasons the kernel version is maintained as the master copy if I understand it correctly. Arnd