On Sep 19, 2014 9:40 AM, "H. Peter Anvin" <hpa@xxxxxxxxx> 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 > -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html