On 25.03.2020 11:00, Andrew Cooper wrote: > On 24/03/2020 16:29, Jan Beulich wrote: >> --- a/xen/arch/x86/x86_emulate/x86_emulate.c >> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c >> @@ -5975,6 +5975,60 @@ x86_emulate( >> goto done; >> break; >> >> + case X86EMUL_OPC(0x0f, 0x07): /* sysret */ >> + vcpu_must_have(syscall); >> + /* Inject #UD if syscall/sysret are disabled. */ >> + fail_if(!ops->read_msr); >> + if ( (rc = ops->read_msr(MSR_EFER, &msr_val, ctxt)) != X86EMUL_OKAY >> ) >> + goto done; >> + generate_exception_if((msr_val & EFER_SCE) == 0, EXC_UD); > > (as with the SYSCALL side), no need for the vcpu_must_have(syscall) as > well as this check.
Upon re-reading I'm now confused - are you suggesting to also drop the EFER.SCE check? That's not what you said in reply to 6/7. If so, what's your thinking behind saying so? If I'm to guess, this may go along the lines of you suggesting to drop the explicit CPUID checks from SYSENTER/SYSEXIT as well, but I'm not seeing there either why you would think this way (albeit there it's also a little vague what exact changes you're thinking of at the MSR handling side). Jan