kvm.vger.kernel.org archive mirror
 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, yu-cheng.yu@intel.com
Subject: Re: [PATCH v8 3/7] KVM: VMX: Pass through CET related MSRs
Date: Tue, 10 Dec 2019 17:50:52 -0800	[thread overview]
Message-ID: <20191211015052.GF23765@linux.intel.com> (raw)
In-Reply-To: <20191211013207.GA12845@local-michael-cet-test>

On Wed, Dec 11, 2019 at 09:32:07AM +0800, Yang Weijiang wrote:
> On Tue, Dec 10, 2019 at 01:18:21PM -0800, Sean Christopherson wrote:
> > On Fri, Nov 01, 2019 at 04:52:18PM +0800, Yang Weijiang wrote:
> > > CET MSRs pass through Guest directly to enhance performance.
> > > CET runtime control settings are stored in MSR_IA32_{U,S}_CET,
> > > Shadow Stack Pointer(SSP) are stored in MSR_IA32_PL{0,1,2,3}_SSP,
> > > SSP table base address is stored in MSR_IA32_INT_SSP_TAB,
> > > these MSRs are defined in kernel and re-used here.
> > > 
> > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> > > index dd387a785c1e..4166c4fcad1e 100644
> > > --- a/arch/x86/kvm/cpuid.c
> > > +++ b/arch/x86/kvm/cpuid.c
> > > @@ -371,13 +371,13 @@ static inline void do_cpuid_7_mask(struct kvm_cpuid_entry2 *entry, int index)
> > >  		F(AVX512VBMI) | F(LA57) | F(PKU) | 0 /*OSPKE*/ |
> > >  		F(AVX512_VPOPCNTDQ) | F(UMIP) | F(AVX512_VBMI2) | F(GFNI) |
> > >  		F(VAES) | F(VPCLMULQDQ) | F(AVX512_VNNI) | F(AVX512_BITALG) |
> > > -		F(CLDEMOTE) | F(MOVDIRI) | F(MOVDIR64B);
> > > +		F(CLDEMOTE) | F(MOVDIRI) | F(MOVDIR64B) | F(SHSTK);
> > >  
> > >  	/* cpuid 7.0.edx*/
> > >  	const u32 kvm_cpuid_7_0_edx_x86_features =
> > >  		F(AVX512_4VNNIW) | F(AVX512_4FMAPS) | F(SPEC_CTRL) |
> > >  		F(SPEC_CTRL_SSBD) | F(ARCH_CAPABILITIES) | F(INTEL_STIBP) |
> > > -		F(MD_CLEAR);
> > > +		F(MD_CLEAR) | F(IBT);
> > 
> > Advertising CET to userspace/guest needs to be done at the end of the
> > series, or at least after CR4.CET is no longer reserved, e.g. KVM_SET_SREGS
> > will fail and the guest will get a #GP when trying to set CR4.CET.
> > 
> > I'm pretty sure I've said this at least twice in previous versions of
> > this series...
> 
> Thanks Sean for picking these up!
> The reason is, starting from this patch, I'm using guest_cpuid_has(CET)
> to check the availability of guest CET CPUID, so logically I would like to let
> the readers understand CET related CPUID word is
> defined as above. But no problem, I can move these definitions to a
> latter patch as the patchset only meaningful as a whole. 

Adding usage of guest_cpuid_has(CET) without advertising CET is perfectly
ok from a functionality perspective.  Having a user without a consumer
isn't ideal, but it's better than having one gigantic patch.

The problem with advertising CET when it's not fully supported is that it
will break bisection, e.g. trying to boot a CET-enabled guest would get a
#GP during boot and likely crash.  Whether or not a series is useful when
taken as a whole is orthogonal to the integrity of each invidiual patch.

  reply	other threads:[~2019-12-11  1:51 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-01  8:52 [PATCH v8 0/7] Introduce support for guest CET feature Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 1/7] KVM: CPUID: Fix IA32_XSS support in CPUID(0xd,i) enumeration Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 2/7] KVM: VMX: Define CET VMCS fields and #CP flag Yang Weijiang
2019-12-10 21:00   ` Sean Christopherson
2019-12-11  1:45     ` Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 3/7] KVM: VMX: Pass through CET related MSRs Yang Weijiang
2019-12-10 21:18   ` Sean Christopherson
2019-12-11  1:32     ` Yang Weijiang
2019-12-11  1:50       ` Sean Christopherson [this message]
2019-12-11  2:27         ` Yang Weijiang
2019-12-16  2:18     ` Yang Weijiang
2019-12-18  0:34       ` Sean Christopherson
2019-12-18 13:55         ` Yang Weijiang
2019-12-18 16:02           ` Sean Christopherson
2019-11-01  8:52 ` [PATCH v8 4/7] KVM: VMX: Load CET states on vmentry/vmexit Yang Weijiang
2019-12-10 21:23   ` Sean Christopherson
2019-12-11  1:54     ` Yang Weijiang
2019-12-11 16:35       ` Sean Christopherson
2019-12-12  1:04         ` Yang Weijiang
2019-12-18  0:30           ` Sean Christopherson
2019-12-18 13:20             ` Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 5/7] KVM: X86: Enable CET bits update in IA32_XSS Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 6/7] KVM: X86: Load guest fpu state when accessing MSRs managed by XSAVES Yang Weijiang
2019-12-10 21:27   ` Sean Christopherson
2019-12-11  2:03     ` Yang Weijiang
2019-11-01  8:52 ` [PATCH v8 7/7] KVM: X86: Add user-space access interface for CET MSRs Yang Weijiang
2019-12-10 21:58   ` Sean Christopherson
2019-12-11  2:19     ` Yang Weijiang
2019-12-11 16:27       ` Sean Christopherson
2019-12-12  0:42         ` Yang Weijiang
2019-12-12 16:03 ` [PATCH v8 0/7] Introduce support for guest CET feature Konrad Rzeszutek Wilk
2019-12-13  0:44   ` 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=20191211015052.GF23765@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-cheng.yu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).