> >> > Removing definitions from userspace api isn't a good idea. > >> > > >> > I have no idea why hyper.h is a userspace api, though -- Linux doesn't > >> > define any of those, so we could copy the definitions to a private > >> > header, rename, and never look at this file again. > >> > >> That was a thinko when it was moved to uapi, and it has already been > >> identified as a problem, so now QEMU has its own header with the > >> definitions it needs, and I'm unaware of any other userspace project > >> that depends on this stuff. So I've been planning to remove it from > >> uapi but still haven't got around to posting the patch :( > > > > Great, let's be bold here. > > asm/hyperv.h is not uapi. > > I would include a patch renaming arch/x86/include/uapi/asm/hyperv.h to > arch/x86/include/asm/hyperv.h but we already have 'mshyperv.h' there and > I don't quite understand the difference. We can either merge them or > come up with a rule distinguishing them. > > K. Y., Michael, what do you think? Good timing for this topic, as I'm now looking at cloning these two files into the arch/arm64 tree for Hyper-V on ARM64. It would be great to get a plan agreed on so I can be consistent on the arm64 side. I would suggest keeping two files: one with just the data structures and #defines that come from the Hyper-V Top-Level Functional Spec (TLFS), and the other with additional data structures, macros, function prototypes, etc. that are specific to Linux guest code. uapi/asm/hyperv.h is already the first one, and asm/mshyperv.h is mostly the second one, though it has some things that should probably move to the first one. There are also a few stray definitions from the Hyper-V TLFS in drivers/pci/host/pci-hyperv.c (HVCALL_RETARGET_INTERRUPT and HV_PARTITION_ID_SELF, for example) that really belong in the first file. And since we're already changing the location of the first file, let's rename it to hyperv-tlfs.h or something similar. Michael > > -- > Vitaly