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

Reply via email to