All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <sean.j.christopherson@intel.com>
To: Yang Weijiang <weijiang.yang@intel.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	pbonzini@redhat.com, jmattson@google.com,
	yu.c.zhang@linux.intel.com
Subject: Re: [PATCH v11 4/9] KVM: VMX: Check CET dependencies on CR settings
Date: Thu, 23 Apr 2020 10:20:32 -0700	[thread overview]
Message-ID: <20200423172032.GI17824@linux.intel.com> (raw)
In-Reply-To: <20200326081847.5870-5-weijiang.yang@intel.com>

On Thu, Mar 26, 2020 at 04:18:41PM +0800, Yang Weijiang wrote:
> CR4.CET is master control bit for CET function.
> There're mutual constrains between CR0.WP and CR4.CET, so need
> to check the dependent bit while changing the control registers.
> 
> Note:
> 1)The processor does not allow CR4.CET to be set if CR0.WP = 0,
>   similarly, it does not allow CR0.WP to be cleared while
>   CR4.CET = 1. In either case, KVM would inject #GP to guest.

Nit: the CET vs. WP dependency and #GP belongs in the "main" part of the
changelog, as it's the crux of the patch.  Item (2) below is more along
the lines of "note" material.

> 
> 2)SHSTK and IBT features share one control MSR:
>   MSR_IA32_{U,S}_CET, which means it's difficult to hide
>   one feature from another in the case of SHSTK != IBT,
>   after discussed in community, it's agreed to allow guest
>   control two features independently as it won't introduce
>   security hole.
> 
> Signed-off-by: Yang Weijiang <weijiang.yang@intel.com>
> ---
>  arch/x86/kvm/vmx/vmx.c | 4 ++++
>  arch/x86/kvm/x86.c     | 3 +++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c
> index bd7cd175fd81..87f101750746 100644
> --- a/arch/x86/kvm/vmx/vmx.c
> +++ b/arch/x86/kvm/vmx/vmx.c
> @@ -3089,6 +3089,10 @@ int vmx_set_cr4(struct kvm_vcpu *vcpu, unsigned long cr4)
>  			return 1;
>  	}
>  
> +	if ((cr4 & X86_CR4_CET) && (!is_cet_supported(vcpu) ||
> +	    !(kvm_read_cr0(vcpu) & X86_CR0_WP)))
> +		return 1;
> +
>  	if (vmx->nested.vmxon && !nested_cr4_valid(vcpu, cr4))
>  		return 1;
>  
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index 830afe5038d1..90acdbbb8a5a 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -804,6 +804,9 @@ int kvm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
>  	if (!(cr0 & X86_CR0_PG) && kvm_read_cr4_bits(vcpu, X86_CR4_PCIDE))
>  		return 1;
>  
> +	if (!(cr0 & X86_CR0_WP) && kvm_read_cr4_bits(vcpu, X86_CR4_CET))
> +		return 1;
> +
>  	kvm_x86_ops->set_cr0(vcpu, cr0);
>  
>  	if ((cr0 ^ old_cr0) & X86_CR0_PG) {
> -- 
> 2.17.2
> 

  reply	other threads:[~2020-04-23 17:20 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-26  8:18 [PATCH v11 0/9] Introduce support for guest CET feature Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 1/9] KVM: VMX: Introduce CET VMX fields and flags Yang Weijiang
2020-04-23 16:07   ` Sean Christopherson
2020-04-24 13:39     ` Yang Weijiang
2020-04-23 16:39   ` Sean Christopherson
2020-04-24 13:44     ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 2/9] KVM: VMX: Set guest CET MSRs per KVM and host configuration Yang Weijiang
2020-04-23 16:27   ` Sean Christopherson
2020-04-24 14:07     ` Yang Weijiang
2020-04-24 14:55       ` Sean Christopherson
2020-04-25  9:14         ` Yang Weijiang
2020-04-25 13:26     ` Paolo Bonzini
2020-04-26 15:26       ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 3/9] KVM: VMX: Set host/guest CET states for vmexit/vmentry Yang Weijiang
2020-04-01  2:23   ` kbuild test robot
2020-04-01  2:23     ` kbuild test robot
2020-04-23 17:17   ` Sean Christopherson
2020-04-24 14:35     ` Yang Weijiang
2020-04-24 14:49       ` Sean Christopherson
2020-04-25  9:20         ` Yang Weijiang
2020-04-27 17:04           ` Sean Christopherson
2020-04-27 17:56             ` Sean Christopherson
2020-03-26  8:18 ` [PATCH v11 4/9] KVM: VMX: Check CET dependencies on CR settings Yang Weijiang
2020-04-23 17:20   ` Sean Christopherson [this message]
2020-04-24 14:36     ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 5/9] KVM: X86: Refresh CPUID once guest XSS MSR changes Yang Weijiang
2020-04-01  3:50   ` kbuild test robot
2020-04-01  3:50     ` kbuild test robot
2020-04-23 17:34   ` Sean Christopherson
2020-04-24 14:47     ` Yang Weijiang
2020-04-25 13:19     ` Paolo Bonzini
2020-04-26 15:01       ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 6/9] KVM: X86: Load guest fpu state when access MSRs managed by XSAVES Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 7/9] KVM: X86: Add userspace access interface for CET MSRs Yang Weijiang
2020-03-28  7:40   ` kbuild test robot
2020-03-28  7:40     ` kbuild test robot
2020-04-01  4:54   ` kbuild test robot
2020-04-01  4:54     ` kbuild test robot
2020-04-23 18:14   ` Sean Christopherson
2020-04-24 15:02     ` Yang Weijiang
2020-04-24 15:10       ` Sean Christopherson
2020-04-25  9:28         ` Yang Weijiang
2020-04-25 15:31   ` Paolo Bonzini
2020-04-26 15:23     ` Yang Weijiang
2020-04-27 14:04       ` Paolo Bonzini
2020-04-28 13:41         ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 8/9] KVM: VMX: Enable CET support for nested VM Yang Weijiang
2020-04-01  6:11   ` kbuild test robot
2020-04-01  6:11     ` kbuild test robot
2020-04-23 18:29   ` Sean Christopherson
2020-04-24 15:24     ` Yang Weijiang
2020-03-26  8:18 ` [PATCH v11 9/9] KVM: X86: Set CET feature bits for CPUID enumeration Yang Weijiang
2020-03-27  4:41   ` kbuild test robot
2020-03-27  4:41     ` kbuild test robot
2020-04-23 16:56   ` Sean Christopherson
2020-04-24 14:17     ` Yang Weijiang
2020-04-23 16:58   ` Sean Christopherson
2020-04-24 14:23     ` Yang Weijiang
2020-03-26  8:18 ` [kvm-unit-tests PATCH] x86: Add tests for user-mode CET Yang Weijiang
2020-04-23 15:51 ` [PATCH v11 0/9] Introduce support for guest CET feature Sean Christopherson
2020-04-24 13:31   ` Yang Weijiang
2020-04-23 16:03 ` Sean Christopherson
2020-04-24 13:34   ` Yang Weijiang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200423172032.GI17824@linux.intel.com \
    --to=sean.j.christopherson@intel.com \
    --cc=jmattson@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=weijiang.yang@intel.com \
    --cc=yu.c.zhang@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.