Re: Standardizing an MSR or other hypercall to get an RNG seed?

H. Peter Anvin
2014-09-19T16:40:42Z

On 09/19/2014 09:14 AM, Nakajima, Jun wrote:
>
> I slept on it, and I think using the CPUID instruction alone would be
> simple and efficient:
> - We have a huge space for CPUID leaves
> - CPUID also works for user-level
> - It can take an additional 32-bit parameter (ECX), and returns 4
> 32-bit values (EAX, EBX, ECX, and EDX). RDMSR, for example, returns a
> 64-bit value.
>
> Basically we can use it to implement a hypercall (rather than VMCALL).
>
> For example,
> - CPUID 0x48000001.EAX would return the feature presence (e.g. in
> EBX), and the result in EDX:EAX (if present) at the same time, or
> - CPUID 0x48000001.EAX would return the feature presence only, and
> CPUID 0x48000002.EAX (acts like a hypercall) returns up to 4 32-bit
> values.
>

There is a huge disadvantage to the fact that CPUID is a user space
instruction, though.

-hpa