From mboxrd@z Thu Jan 1 00:00:00 1970 From: "H. Peter Anvin" Subject: Re: Standardizing an MSR or other hypercall to get an RNG seed? Date: Fri, 19 Sep 2014 09:40:42 -0700 Message-ID: <541C5C8A.6030304@zytor.com> References: <541B13B8.1020006@redhat.com> <1969371640.51211843.1411066715223.JavaMail.zimbra@redhat.com> <0180a8dfcad746a895755c4374853c16@BY2PR03MB585.namprd03.prod.outlook.com> <541B5553.7020203@zytor.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Mathew John , Theodore Ts'o , John Starks , kvm list , Gleb Natapov , Niels Ferguson , Linux Virtualization , David Hepkin , Jake Oshins , Paolo Bonzini To: "Nakajima, Jun" , Andy Lutomirski Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org List-Id: kvm.vger.kernel.org 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