Re: [PATCH 4/4] x86: properly handle kvm emulation of hyperv

Paolo Bonzini
2013-07-24T07:06:35Z

Il 24/07/2013 08:54, Jason Wang ha scritto:
> On 07/24/2013 12:48 PM, H. Peter Anvin wrote:
>> On 07/23/2013 09:37 PM, Jason Wang wrote:
>>> On 07/23/2013 10:48 PM, H. Peter Anvin wrote:
>>>> On 07/23/2013 06:55 AM, KY Srinivasan wrote:
>>>>> This strategy of hypervisor detection based on some detection order IMHO is not
>>>>> a robust detection strategy. The current scheme works since the only hypervisor emulated
>>>>> (by other hypervisors happens to be Hyper-V). What if this were to change.
>>>>>
>>>> One strategy would be to pick the *last* one in the CPUID list, since
>>>> the ones before it are logically the one(s) being emulated...
>>>>
>>>> -hpa
>>>>
>>> How about simply does a reverse loop from 0x40010000 to 0x40010000?
>>>
>> Not all systems like being poked too far into hyperspace. Just remember
>> the last match and walk the list.
>>
>> -hpa
>>
>
> Ok, but it raises a question - how to know it was the 'last' match
> without knowing all signatures of other hyper-visor?

You can return a "priority" value from the .detect function. The
priority value can simply be the CPUID leaf where the signature was
found (or a low value such as 1 if detection was done with DMI).

Then you can pick the hypervisor with the highest priority instead of
hard-coding the order.

Paolo