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

Re: [Xen-devel] [PATCH v2] x86: cap address bits CPUID output



On 09/05/16 14:26, Jan Beulich wrote:
>>>> On 09.05.16 at 15:21, <andrew.cooper3@xxxxxxxxxx> wrote:
>> On 09/05/16 14:15, Jan Beulich wrote:
>>> Don't use more or report more to guests than we are capable of
>>> handling.
>>>
>>> At once
>>> - correct the involved extended CPUID level checks,
>>> - simplify the code in hvm_cpuid() and mtrr_top_of_ram().
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, with perhaps one
>> tweak
>>
>>> --- a/xen/arch/x86/hvm/hvm.c
>>> +++ b/xen/arch/x86/hvm/hvm.c
>>> @@ -3504,19 +3504,19 @@ void hvm_cpuid(unsigned int input, unsig
>>>          break;
>>>  
>>>      case 0x80000008:
>>> +        *eax &= 0xff;
>>>          count = d->arch.paging.gfn_bits + PAGE_SHIFT;
>>> -        if ( (*eax & 0xff) > count )
>>> -            *eax = (*eax & ~0xff) | count;
>>> +        if ( *eax > count )
>>> +            *eax = count;
>>>  
>>>          hvm_cpuid(1, NULL, NULL, NULL, &_edx);
>>>          count = _edx & (cpufeat_mask(X86_FEATURE_PAE) |
>>>                          cpufeat_mask(X86_FEATURE_PSE36)) ? 36 : 32;
>>> -        if ( (*eax & 0xff) < count )
>>> -            *eax = (*eax & ~0xff) | count;
>>> +        if ( *eax < count )
>>> +            *eax = count;
>>>  
>>>          hvm_cpuid(0x80000001, NULL, NULL, NULL, &_edx);
>>> -        *eax = (*eax & ~0xffff00) | (_edx & cpufeat_mask(X86_FEATURE_LM)
>>> -                                     ? 0x3000 : 0x2000);
>>> +        *eax |= _edx & cpufeat_mask(X86_FEATURE_LM) ? vaddr_bits << 8 : 
>>> 0x2000;
> In that case I'd prefer
>
>         *eax |= (_edx & cpufeat_mask(X86_FEATURE_LM) ? vaddr_bits : 32) << 8;

That looks better.

~Andrew

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

 


Rackspace

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