On Tue, Apr 05, 2022 at 08:29:36AM +0200, Arnd Bergmann wrote: > I think the users all have their own copies, at least the ones I could > find on codesearch.debian.org. However, there are 27 virtio_*.h > files in include/uapi/linux that probably should stay together for > the purpose of defining the virtio protocol, and some others might > be uapi relevant. > > I see that at least include/uapi/linux/vhost.h has ioctl() definitions > in it, and includes the virtio_ring.h header indirectly. Uhh. We had a somilar mess (but at a smaller scale) in nvme, where the uapi nvme.h contained both the UAPI and the protocol definition. We took a hard break to only have a nvme_ioctl.h in the uapi header and linux/nvme.h for the protocol. This did break a bit of userspace compilation (but not running obviously) at the time, but really made the headers much easier to main. Some userspace keeps on copying nvme.h with the protocol definitions.