From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: [PATCH] Documentation/kvm : Add documentation on Hypercalls Date: Wed, 1 Aug 2012 00:07:36 -0300 Message-ID: <20120801030736.GA31711@amt.cnet> References: <20120724085359.11344.91022.sendpatchset@codeblue.in.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Rob Landley , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Alexander Graf , Randy Dunlap , KVM , "H. Peter Anvin" , Gleb Natapov , Ingo Molnar , Avi Kivity , Jan Kiszka To: Raghavendra K T Return-path: Content-Disposition: inline In-Reply-To: <20120724085359.11344.91022.sendpatchset@codeblue.in.ibm.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org On Tue, Jul 24, 2012 at 02:23:59PM +0530, Raghavendra K T wrote: > From: Raghavendra K T > > Thanks Alex for KVM_HC_FEATURES inputs and Jan for VAPIC_POLL_IRQ, > and Peter (HPA) for suggesting hypercall ABI addition. > > Signed-off-by: Raghavendra K T > --- > Please have a closer look at Hypercall ABI newly added > > Changes since last post: > - Added hypercall ABI (Peter) > - made KVM_HC_VAPIC_POLL_IRQ active explicitly (Randy) > > TODO: We need to add history details of each hypercall as suggested by HPA, > which I could not trace easily. Hope it is easy for hypercall authors > > Documentation/virtual/hypercalls.txt | 71 ++++++++++++++++++++++++++++++++++ > 1 files changed, 71 insertions(+), 0 deletions(-) > create mode 100644 Documentation/virtual/hypercalls.txt > > diff --git a/Documentation/virtual/hypercalls.txt b/Documentation/virtual/hypercalls.txt > new file mode 100644 > index 0000000..caffc08 > --- /dev/null > +++ b/Documentation/virtual/hypercalls.txt > @@ -0,0 +1,71 @@ > +Hypercall ABI: > +============= > +A brief look at calling conventions of X86, S390 and PPC > +X86: > + KVM Hypercalls have a three-byte sequence of either the vmrun or the vmmrun > + instruction. The hypervisor can replace it with instructions that are > + guaranteed to be supported. vmcall. > + > + Up to four arguments may be passed in rbx, rcx, rdx, and rsi respectively. > + The hypercall number should be placed in rax and the return value will be > + placed in rax. No other registers will be clobbered unless explicitly stated > + by the particular hypercall. It depends on the hypercall. It happens that current hypercalls use the four registers, but its not an ABI (hyper-v hypercalls uses r8, for example).