x86emul: correct VEX.L handling for VCVT{,T}S{S,D}2SI
authorJan Beulich <jbeulich@suse.com>
Tue, 5 Sep 2017 15:32:05 +0000 (17:32 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 5 Sep 2017 15:32:05 +0000 (17:32 +0200)
Recent changes to the SDM (and XED) have made clear that older hardware
raising #UD when the bit is set was really an erratum. Generalize the
so far AMD-only override.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/x86_emulate/x86_emulate.c

index 0d76351163f09cc9cc59920f4671bac56b114938..d977e371b1de12e87da6448684176efdf2a39031 100644 (file)
@@ -5609,9 +5609,8 @@ x86_emulate(
         }
         else
         {
-            if ( ctxt->vendor == X86_VENDOR_AMD )
-                vex.l = 0;
-            generate_exception_if(vex.l || vex.reg != 0xf, EXC_UD);
+            generate_exception_if(vex.reg != 0xf, EXC_UD);
+            vex.l = 0;
             host_and_vcpu_must_have(avx);
             get_fpu(X86EMUL_FPU_ymm, &fic);
         }