| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86: always supply .cpuid() handler to x86_emulate()
 >>> On 11.11.16 at 15:16, <andrew.cooper3@xxxxxxxxxx> wrote:
> On 10/11/16 12:30, Jan Beulich wrote:
>> --- a/xen/arch/x86/traps.c
>> +++ b/xen/arch/x86/traps.c
>> @@ -2755,6 +2755,24 @@ static int priv_op_write_msr(unsigned in
>>      return X86EMUL_UNHANDLEABLE;
>>  }
>>  
>> +int pv_emul_cpuid(unsigned int *eax, unsigned int *ebx, unsigned int *ecx,
>> +                  unsigned int *edx, struct x86_emulate_ctxt *ctxt)
>> +{
>> +    struct cpu_user_regs regs = *ctxt->regs;
> 
> You need a CPUID faulting check here, matching the hvm side of things,
> or you will leave a latent bug which gets exposed when switching to
> using full x86_emulate() for PV guests.
That addition is part of the patch actually switching to x86_emulate().
I don't think it belongs here, as for now we don't mean to emulate
CPUID insns.
> Would it be wise to add a fail_if(!ops->cpuid) to x86_emulate() to catch
> other misuses?
I don't think so - there may be cases where it's indeed unneeded
(and I foresee such arising quickly once the ->validate() hooks is
in place, addition of which is now too part of aforementioned patch).
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
 
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |