On 20/04/21 22:16, Sean Christopherson wrote:
On Tue, Apr 20, 2021, Sean Christopherson wrote:
On Tue, Apr 20, 2021, Paolo Bonzini wrote:
In this particular case, if userspace sets the bit in CPUID2 but doesn't
handle KVM_EXIT_HYPERCALL, the guest will probably trigger some kind of
assertion failure as soon as it invokes the HC_PAGE_ENC_STATUS hypercall.
Oh! Almost forgot my hail mary idea. Instead of a new capability, can we
reject the hypercall if userspace has _not_ set KVM_CAP_ENFORCE_PV_FEATURE_CPUID?
if (vcpu->arch.pv_cpuid.enforce &&
!guest_pv_has(vcpu, KVM_FEATURE_HC_PAGE_ENC_STATUS)
break;
Couldn't userspace enable that capability and _still_ copy the supported
CPUID blindly to the guest CPUID, without supporting the hypercall?
(BTW, it's better to return a bitmask of hypercalls that will exit to
userspace from KVM_CHECK_EXTENSION. Userspace can still reject with
-ENOSYS those that it doesn't know, but it's important that it knows in
general how to handle KVM_EXIT_HYPERCALL).
Paolo