On 14/08/2025 12:20 pm, Jan Beulich wrote: > On 08.08.2025 22:23, Andrew Cooper wrote: >> Of note, CR4.FRED is bit 32 and cannot enabled outside of 64bit mode. >> >> Most supported toolchains don't understand the FRED instructions yet. ERETU >> and ERETS are easy to wrap (they encoded as REPZ/REPNE CLAC), while LKGS is >> more complicated and deferred for now. >> >> I have intentionally named the FRED MSRs differently to the spec. In the >> spec, the stack pointer names alias the TSS fields of the same name, despite >> very different semantics. >> >> Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> > Acked-by: Jan Beulich <jbeul...@suse.com> > with ... > >> --- a/xen/arch/x86/Kconfig >> +++ b/xen/arch/x86/Kconfig >> @@ -57,6 +57,10 @@ config HAS_CC_CET_IBT >> # Retpoline check to work around >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93654 >> def_bool $(cc-option,-fcf-protection=branch -mmanual-endbr >> -mindirect-branch=thunk-extern) && $(as-instr,endbr64) >> >> +config HAS_AS_FRED >> + # binutils >= 2.41 or LLVM >= 19 >> + def_bool $(as-instr,eretu;lkgs %ax) > ..., as per your reply, this preferably dropped
Having now got the PV side complete (I think), I can indeed drop this, but I need diff --git a/xen/arch/x86/include/asm/cpufeatures.h b/xen/arch/x86/include/asm/cpufeatures.h index 71308d9dafc8..0a98676c1604 100644 --- a/xen/arch/x86/include/asm/cpufeatures.h +++ b/xen/arch/x86/include/asm/cpufeatures.h @@ -18,7 +18,7 @@ XEN_CPUFEATURE(ARCH_PERFMON, X86_SYNTH( 3)) /* Intel Architectural PerfMon XEN_CPUFEATURE(TSC_RELIABLE, X86_SYNTH( 4)) /* TSC is known to be reliable */ XEN_CPUFEATURE(XTOPOLOGY, X86_SYNTH( 5)) /* cpu topology enum extensions */ XEN_CPUFEATURE(CPUID_FAULTING, X86_SYNTH( 6)) /* cpuid faulting */ -/* Bit 7 unused */ +XEN_CPUFEATURE(XEN_FRED, X86_SYNTH( 7)) /* Xen uses FRED */ XEN_CPUFEATURE(APERFMPERF, X86_SYNTH( 8)) /* APERFMPERF */ XEN_CPUFEATURE(MFENCE_RDTSC, X86_SYNTH( 9)) /* MFENCE synchronizes RDTSC */ XEN_CPUFEATURE(XEN_SMEP, X86_SYNTH(10)) /* SMEP gets used by Xen itself */ too for a fastpath in assembly. I've folded it into this patch. ~Andrew