On Wed, Jan 25, 2023 at 6:17 AM Paolo Bonzini pbonzini@redhat.com wrote:
On 1/25/23 00:16, Jim Mattson wrote:
This is a userspace ABI change that breaks existing hypervisors. Please don't do this. Userspace ABIs are supposed to be inviolate.
What exactly is broken?
KVM_GET_SUPPORTED_CPUID no longer returns the host topology in leaf 0xB.
Part of the definition of the API is that you can take KVM_GET_SUPPORTED_CPUID and pass it to KVM_SET_CPUID2 for all vCPUs. Returning host topology information for a random host vCPU definitely violates the contract.
You are attempting to rewrite history. Leaf 0xB was added to KVM_GET_SUPPORTED_CPUID in commit 0771671749b5 ("KVM: Enhance guest cpuid management"), and the only documentation of the KVM_GET_SUPPORTED_CPUID ioctl at that time was in the commit message:
- KVM_GET_SUPPORTED_CPUID: get all cpuid entries the host (and kvm) supports
There is nothing in the commit message or the official documentation at the time that the ioctl was added that says anything about passing the result to KVM_SET_CPUID2 for all vCPUs. Operationally, it is quite clear from the committed code that the intention was to return the host topology information for the current logical processor.
Any future changes to either the operational behavior or the documented behavior of the ABI surely demand a version bump.