There are a number of exception condition related errata on SandyBridge CPUs, some of which are unexpected #UD (others, of no interest here, are lack of mandated exceptions, or exceptions of unexpected type). Annotate the one workaround we already have, and add two more.
Due to the exception recovery we have in place for stub invocations these aren't security issues. Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -6078,9 +6078,11 @@ x86_emulate( else { generate_exception_if(vex.reg != 0xf, EXC_UD); - vex.l = 0; host_and_vcpu_must_have(avx); get_fpu(X86EMUL_FPU_ymm); + + /* Work around erratum BT230. */ + vex.l = 0; } opc = init_prefixes(stub); @@ -6983,6 +6985,9 @@ x86_emulate( get_fpu(X86EMUL_FPU_mmx); } + /* Work around erratum BT36. */ + vex.w = 0; + opc = init_prefixes(stub); opc[0] = b; insn_bytes = PFX_BYTES + 1; @@ -8815,6 +8820,11 @@ x86_emulate( generate_exception_if(vex.l || vex.reg != 0xf, EXC_UD); host_and_vcpu_must_have(avx); get_fpu(X86EMUL_FPU_ymm); + + /* Work around erratum BT41. */ + if ( !mode_64bit() ) + vex.w = 0; + opc = init_prefixes(stub); goto pextr; _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel