On Sep 19, 2014 9:40 AM, "H. Peter Anvin" <h...@zytor.com> wrote:
>
> 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.

We can always make cpuid on the leaf in question return all zeros if CPL > 0.

>
>         -hpa
>
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to