• Paolo Bonzini's avatar
    KVM: x86: introduce kvm_supported_xcr0() · 4ff41732
    Paolo Bonzini authored
    XSAVE support for KVM is already using host_xcr0 & KVM_SUPPORTED_XCR0 as
    a "dynamic" version of KVM_SUPPORTED_XCR0.
    
    However, this is not enough because the MPX bits should not be presented
    to the guest unless kvm_x86_ops confirms the support.  So, replace all
    instances of host_xcr0 & KVM_SUPPORTED_XCR0 with a new function
    kvm_supported_xcr0() that also has this check.
    
    Note that here:
    
    		if (xstate_bv & ~KVM_SUPPORTED_XCR0)
    			return -EINVAL;
    		if (xstate_bv & ~host_cr0)
    			return -EINVAL;
    
    the code is equivalent to
    
    		if ((xstate_bv & ~KVM_SUPPORTED_XCR0) ||
    		    (xstate_bv & ~host_cr0)
    			return -EINVAL;
    
    i.e. "xstate_bv & (~KVM_SUPPORTED_XCR0 | ~host_cr0)" which is in turn
    equal to "xstate_bv & ~(KVM_SUPPORTED_XCR0 & host_cr0)".  So we should
    also use the new function there.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    4ff41732
cpuid.c 19.9 KB