On Thu, 2021-01-28 at 13:18 +0100, Paolo Bonzini wrote: > My only qualm is really that the userspace API is really ugly. > > Can you just have both a VM and a VCPU ioctl (so no vcpu_id to pass!), Sure, that seems like a sensible thing to do. > add a generous padding to the struct, I think I added *some* padding to the struct kvm_xen_hvm_attr which wasn't there in Joao's original. I can add more, certainly. > and just get everything out with a > single ioctl without having to pass in a type? Honestly, I don't even care about reading it out except for long_mode which the kernel *does* infer for itself when the MSR is used to fill in the hypercall page. I quite like keeping them separate; they *do* get set separately, in response to different hypercalls from the guest. And the capabilities translate naturally to a given field existing or not existing; having another mapping of that to fields in a binary structure would be additional complexity.