[Xen-devel] [RFC] Hypervisor RNG and enumeration

H. Peter Anvin
Wed, 29 Oct 2014 16:07:52 -0000

On 10/29/2014 03:37 AM, Andrew Cooper wrote:
>>
>> CPUID with EAX = 0x4F000001 and ECX >= N MUST return all zeros.
>>
>> To the extent that the hypervisor prefers a given interface, it should
>> specify that interface earlier in the list.  For example, KVM might
place
>> its "KVMKVMKVM" signature first in the list to indicate that
it should be
>> used by guests in preference to other supported interfaces.  Other
hypervisors
>> would likely use a different order.
>>
>> The exact semantics of the ordering of the list is beyond the scope of
>> this specification.
>
> How do you evaluate N?
>
> It would make more sense for CPUID.4F000001[ECX=0] to return N in one
> register, and perhaps "prefered interface index" in another.  The
> signatures can then be obtained from CPUID.4F000001[ECX={1 to N}].
>
> That way, a consumer can be confident that they have found all the
> signatures, without relying on an unbounded loop and checking for zeroes

Yes.  Specifically, it should return it in EAX.  That is the preferred
interface and we are trying to push for that going forward.

	-hpa