From: Jan Beulich Date: Wed, 14 Dec 2016 09:09:40 +0000 (+0100) Subject: x86emul: check for SYSENTER/SYSEXIT availability X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~3151 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d95533f554cde498b9afe731b94a4d9198b47cbe;p=xen.git x86emul: check for SYSENTER/SYSEXIT availability We can't exclude someone wanting to hide the instructions from guests. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index e78593d569..49ae96a0a3 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -1288,6 +1288,7 @@ static bool vcpu_has( } #define vcpu_has_fpu() vcpu_has( 1, EDX, 0, ctxt, ops) +#define vcpu_has_sep() vcpu_has( 1, EDX, 11, ctxt, ops) #define vcpu_has_cmov() vcpu_has( 1, EDX, 15, ctxt, ops) #define vcpu_has_clflush() vcpu_has( 1, EDX, 19, ctxt, ops) #define vcpu_has_mmx() vcpu_has( 1, EDX, 23, ctxt, ops) @@ -4900,6 +4901,7 @@ x86_emulate( uint64_t msr_content; int lm; + vcpu_must_have(sep); generate_exception_if(mode_ring0(), EXC_GP, 0); generate_exception_if(!in_protmode(ctxt, ops), EXC_GP, 0); @@ -4946,6 +4948,7 @@ x86_emulate( uint64_t msr_content; bool user64 = rex_prefix & REX_W; + vcpu_must_have(sep); generate_exception_if(!mode_ring0(), EXC_GP, 0); generate_exception_if(!in_protmode(ctxt, ops), EXC_GP, 0);