[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] x86/emulate: Don't assume that addr_size == 32 implies protected mode



On 16/12/16 10:34, Jan Beulich wrote:
>>>> On 16.12.16 at 10:55, <george.dunlap@xxxxxxxxxx> wrote:
>> Callers of x86_emulate() generally define addr_size based on the code
>> segment.  In vm86 mode, the code segment is set by the hardware to be
>> 16-bits; but it is entirely possible to enable protected mode, set the
>> CS to 32-bits, and then disable protected mode.  (This is commonly
>> called "unreal mode".)
> 
> To better match this description I think it would be preferable ...
> 
>> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
>> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
>> @@ -2149,11 +2149,8 @@ x86_decode(
>>              default:
>>                  BUG(); /* Shouldn't be possible. */
>>              case 2:
>> -                if ( in_realmode(ctxt, ops) || (state->regs->eflags & 
>> EFLG_VM) )
>> -                    break;
>> -                /* fall through */
>>              case 4:
>> -                if ( modrm_mod != 3 )
>> +                if ( modrm_mod != 3 || !in_protmode(ctxt, ops) )
>>                      break;
> 
> ... to keep the EFLAGS.VM in case 2, and check in_realmode()
> in case 4. Otoh what you have now is the more compact form,
> resulting in fewer branches ...

You're not giving me a very clear picture of what you'd like me to do
here. :-)  Did you mean "even though" instead of "OTOH"?  ("On the other
hand" usually indicates a change of mind.)

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.