[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 2/8] x86: disable XPTI when RDCL_NO
>>> On 19.03.18 at 14:38, <JBeulich@xxxxxxxx> wrote: > Use the respective ARCH_CAPABILITIES MSR bit, but don't expose the MSR > to guests yet. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > Tested-by: Juergen Gross <jgross@xxxxxxxx> > Reviewed-by: Juergen Gross <jgross@xxxxxxxx> > Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > --- > v3: Re-base. > v2: New. And I realize I've once again forgot to Cc the two of you for the smallish tools side changes. Jan > --- a/tools/libxl/libxl_cpuid.c > +++ b/tools/libxl/libxl_cpuid.c > @@ -204,6 +204,7 @@ int libxl_cpuid_parse_config(libxl_cpuid > {"avx512-4fmaps",0x00000007, 0, CPUID_REG_EDX, 3, 1}, > {"ibrsb", 0x00000007, 0, CPUID_REG_EDX, 26, 1}, > {"stibp", 0x00000007, 0, CPUID_REG_EDX, 27, 1}, > + {"arch-caps", 0x00000007, 0, CPUID_REG_EDX, 29, 1}, > > {"lahfsahf", 0x80000001, NA, CPUID_REG_ECX, 0, 1}, > {"cmplegacy", 0x80000001, NA, CPUID_REG_ECX, 1, 1}, > --- a/tools/misc/xen-cpuid.c > +++ b/tools/misc/xen-cpuid.c > @@ -143,6 +143,7 @@ static const char *str_7d0[32] = > [ 2] = "avx512_4vnniw", [ 3] = "avx512_4fmaps", > > [26] = "ibrsb", [27] = "stibp", > + /* 28 */ [29] = "arch_caps", > }; > > static struct { > --- a/xen/arch/x86/setup.c > +++ b/xen/arch/x86/setup.c > @@ -1547,7 +1547,16 @@ void __init noreturn __start_xen(unsigne > cr4_pv32_mask = mmu_cr4_features & XEN_CR4_PV32_BITS; > > if ( opt_xpti < 0 ) > - opt_xpti = boot_cpu_data.x86_vendor != X86_VENDOR_AMD; > + { > + uint64_t caps = 0; > + > + if ( boot_cpu_data.x86_vendor == X86_VENDOR_AMD ) > + caps = ARCH_CAPABILITIES_RDCL_NO; > + else if ( boot_cpu_has(X86_FEATURE_ARCH_CAPS) ) > + rdmsrl(MSR_ARCH_CAPABILITIES, caps); > + > + opt_xpti = !(caps & ARCH_CAPABILITIES_RDCL_NO); > + } > if ( opt_xpti ) > setup_clear_cpu_cap(X86_FEATURE_NO_XPTI); > else > --- a/xen/include/asm-x86/msr-index.h > +++ b/xen/include/asm-x86/msr-index.h > @@ -40,6 +40,8 @@ > #define PRED_CMD_IBPB (_AC(1, ULL) << 0) > > #define MSR_ARCH_CAPABILITIES 0x0000010a > +#define ARCH_CAPABILITIES_RDCL_NO (_AC(1, ULL) << 0) > +#define ARCH_CAPABILITIES_IBRS_ALL (_AC(1, ULL) << 1) > > /* Intel MSRs. Some also available on other CPUs */ > #define MSR_IA32_PERFCTR0 0x000000c1 > --- a/xen/include/public/arch-x86/cpufeatureset.h > +++ b/xen/include/public/arch-x86/cpufeatureset.h > @@ -244,6 +244,7 @@ XEN_CPUFEATURE(AVX512_4VNNIW, 9*32+ 2) / > XEN_CPUFEATURE(AVX512_4FMAPS, 9*32+ 3) /*A AVX512 Multiply Accumulation > Single Precision */ > XEN_CPUFEATURE(IBRSB, 9*32+26) /*A IBRS and IBPB support (used by > Intel) */ > XEN_CPUFEATURE(STIBP, 9*32+27) /*A! STIBP */ > +XEN_CPUFEATURE(ARCH_CAPS, 9*32+29) /* IA32_ARCH_CAPABILITIES MSR */ > > #endif /* XEN_CPUFEATURE */ > > > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |