* [PATCH 1/3] Documentation/kvm : Add documentation on hypercalls
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
@ 2012-08-07 7:39 ` Raghavendra K T
2012-08-07 7:40 ` [PATCH 2/3] Documentation/header : Correct vmrun to vmcall typo Raghavendra K T
` (4 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Raghavendra K T @ 2012-08-07 7:39 UTC (permalink / raw)
To: Rob Landley, linux-kernel, linux-doc
Cc: Alexander Graf, Randy Dunlap, H. Peter Anvin, KVM,
Raghavendra K T, Avi Kivity, Gleb Natapov, Ingo Molnar,
Marcelo Tosatti, Jan Kiszka, Thomas Gleixner, X86
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
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 <raghavendra.kt@linux.vnet.ibm.com>
---
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/kvm/hypercalls.txt | 66 ++++++++++++++++++++++++++++++
1 files changed, 66 insertions(+), 0 deletions(-)
create mode 100644 Documentation/virtual/kvm/hypercalls.txt
diff --git a/Documentation/virtual/kvm/hypercalls.txt b/Documentation/virtual/kvm/hypercalls.txt
new file mode 100644
index 0000000..ea113b5
--- /dev/null
+++ b/Documentation/virtual/kvm/hypercalls.txt
@@ -0,0 +1,66 @@
+Linux KVM Hypercall:
+===================
+X86:
+ KVM Hypercalls have a three-byte sequence of either the vmcall or the vmmcall
+ instruction. The hypervisor can replace it with instructions that are
+ guaranteed to be supported.
+
+ 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.
+
+S390:
+ R2-R7 are used for parameters 1-6. In addition, R1 is used for hypercall
+ number. The return value is written to R2.
+
+ S390 uses diagnose instruction as hypercall (0x500) along with hypercall
+ number in R1.
+
+ PowerPC:
+ It uses R3-R10 and hypercall number in R11. R4-R11 are used as output registers.
+ Return value is placed in R3.
+
+ KVM hypercalls uses 4 byte opcode, that are patched with 'hypercall-instructions'
+ property inside the device tree's /hypervisor node.
+ For more information refer to Documentation/virtual/kvm/ppc-pv.txt
+
+KVM Hypercalls Documentation
+===========================
+The template for each hypercall is:
+1. Hypercall name.
+2. Architecture(s)
+3. Status (deprecated, obsolete, active)
+4. Purpose
+
+1. KVM_HC_VAPIC_POLL_IRQ
+------------------------
+Architecture: x86
+Status: active
+Purpose: Trigger guest exit so that the host can check for pending
+interrupts on reentry.
+
+2. KVM_HC_MMU_OP
+------------------------
+Architecture: x86
+Status: deprecated.
+Purpose: Support MMU operations such as writing to PTE,
+flushing TLB, release PT.
+
+3. KVM_HC_FEATURES
+------------------------
+Architecture: PPC
+Status: active
+Purpose: Expose hypercall availability to the guest. On x86 platforms, cpuid
+used to enumerate which hypercalls are available. On PPC, either device tree
+based lookup ( which is also what EPAPR dictates) OR KVM specific enumeration
+mechanism (which is this hypercall) can be used.
+
+4. KVM_HC_PPC_MAP_MAGIC_PAGE
+------------------------
+Architecture: PPC
+Status: active
+Purpose: To enable communication between the hypervisor and guest there is a
+shared page that contains parts of supervisor visible register state.
+The guest can map this shared page to access its supervisor register through
+memory using this hypercall.
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 2/3] Documentation/header : Correct vmrun to vmcall typo
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
2012-08-07 7:39 ` [PATCH 1/3] Documentation/kvm : Add documentation on hypercalls Raghavendra K T
@ 2012-08-07 7:40 ` Raghavendra K T
2012-08-07 7:40 ` [PATCH 2/3] Documentation/ppc: Add ppc hypercall documentation Raghavendra K T
` (3 subsequent siblings)
5 siblings, 0 replies; 9+ messages in thread
From: Raghavendra K T @ 2012-08-07 7:40 UTC (permalink / raw)
To: Rob Landley, linux-kernel, linux-doc
Cc: Alexander Graf, Randy Dunlap, KVM, H. Peter Anvin,
Raghavendra K T, Marcelo Tosatti, Gleb Natapov, Ingo Molnar,
Avi Kivity, Jan Kiszka, X86, Thomas Gleixner
From: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
---
arch/x86/include/asm/kvm_para.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/include/asm/kvm_para.h b/arch/x86/include/asm/kvm_para.h
index 2f7712e..20f5697 100644
--- a/arch/x86/include/asm/kvm_para.h
+++ b/arch/x86/include/asm/kvm_para.h
@@ -116,7 +116,7 @@ static inline bool kvm_check_and_clear_guest_paused(void)
*/
#define KVM_HYPERCALL ".byte 0x0f,0x01,0xc1"
-/* For KVM hypercalls, a three-byte sequence of either the vmrun or the vmmrun
+/* For KVM hypercalls, a three-byte sequence of either the vmcall or the vmmcall
* instruction. The hypervisor may replace it with something else but only the
* instructions are guaranteed to be supported.
*
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 2/3] Documentation/ppc: Add ppc hypercall documentation
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
2012-08-07 7:39 ` [PATCH 1/3] Documentation/kvm : Add documentation on hypercalls Raghavendra K T
2012-08-07 7:40 ` [PATCH 2/3] Documentation/header : Correct vmrun to vmcall typo Raghavendra K T
@ 2012-08-07 7:40 ` Raghavendra K T
2012-08-07 7:43 ` [PATCH 3/3] " Raghavendra K T
2012-08-07 7:52 ` [PATCH 0/3] Documentation : hypercalls Raghavendra K T
` (2 subsequent siblings)
5 siblings, 1 reply; 9+ messages in thread
From: Raghavendra K T @ 2012-08-07 7:40 UTC (permalink / raw)
To: Rob Landley, linux-kernel, linux-doc
Cc: Alexander Graf, Randy Dunlap, H. Peter Anvin, KVM,
Raghavendra K T, Avi Kivity, Gleb Natapov, Ingo Molnar,
Marcelo Tosatti, Jan Kiszka, Thomas Gleixner, X86
From: Alexander Graf <agraf@suse.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
---
Documentation/virtual/kvm/ppc-pv.txt | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/Documentation/virtual/kvm/ppc-pv.txt b/Documentation/virtual/kvm/ppc-pv.txt
index 4911cf9..4cd076f 100644
--- a/Documentation/virtual/kvm/ppc-pv.txt
+++ b/Documentation/virtual/kvm/ppc-pv.txt
@@ -174,3 +174,25 @@ following:
That way we can inject an arbitrary amount of code as replacement for a single
instruction. This allows us to check for pending interrupts when setting EE=1
for example.
+
+Hypercall ABIs in KVM on PowerPC
+=================================
+1) KVM hypercalls (ePAPR)
+
+These are ePAPR compliant hypercall implementation (mentioned above). Even
+generic hypercalls are implemented here, like the ePAPR idle hcall. These are
+available on all targets.
+
+2) PAPR hypercalls
+
+PAPR hypercalls are needed to run server PowerPC PAPR guests (-M pseries in QEMU).
+These are the same hypercalls that pHyp, the POWER hypervisor implements. Some of
+them are handled in the kernel, some are handled in user space. This is only
+available on book3s_64.
+
+3) OSI hypercalls
+
+Mac-on-Linux is another user of KVM on PowerPC, which has its own hypercall (long
+before KVM). This is supported to maintain compatibility. All these hypercalls get
+forwarded to user space. This is only useful on book3s_32, but can be used with
+book3s_64 as well.
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH 3/3] Documentation/ppc: Add ppc hypercall documentation
2012-08-07 7:40 ` [PATCH 2/3] Documentation/ppc: Add ppc hypercall documentation Raghavendra K T
@ 2012-08-07 7:43 ` Raghavendra K T
0 siblings, 0 replies; 9+ messages in thread
From: Raghavendra K T @ 2012-08-07 7:43 UTC (permalink / raw)
To: Raghavendra K T
Cc: Rob Landley, linux-kernel, linux-doc, Alexander Graf,
Randy Dunlap, H. Peter Anvin, KVM, Avi Kivity, Gleb Natapov,
Ingo Molnar, Marcelo Tosatti, Jan Kiszka, Thomas Gleixner, X86
On 08/07/2012 01:10 PM, Raghavendra K T wrote:
> From: Alexander Graf<agraf@suse.de>
>
> Signed-off-by: Alexander Graf<agraf@suse.de>
> Signed-off-by: Raghavendra K T<raghavendra.kt@linux.vnet.ibm.com>
> ---
Sorry it meant to be 3/3.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] Documentation : hypercalls
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
` (2 preceding siblings ...)
2012-08-07 7:40 ` [PATCH 2/3] Documentation/ppc: Add ppc hypercall documentation Raghavendra K T
@ 2012-08-07 7:52 ` Raghavendra K T
2012-08-09 18:31 ` Marcelo Tosatti
2012-08-13 20:40 ` Marcelo Tosatti
5 siblings, 0 replies; 9+ messages in thread
From: Raghavendra K T @ 2012-08-07 7:52 UTC (permalink / raw)
To: Raghavendra K T
Cc: Rob Landley, linux-kernel, linux-doc, Alexander Graf,
Randy Dunlap, KVM, H. Peter Anvin, Marcelo Tosatti, Gleb Natapov,
Ingo Molnar, Avi Kivity, Jan Kiszka, X86, Thomas Gleixner
On 08/07/2012 01:09 PM, Raghavendra K T wrote:
> This is the hypercall documentation patch series
> First patch covers KVM specific hypercall information.
>
> second patch has typo fix for vmcall instruction
> comment in kvm_para.h
>
> Third patch includes a very useful documentation on PowerPC
> hypercalls originally written by Alex
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 0/3] Documentation : hypercalls
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
` (3 preceding siblings ...)
2012-08-07 7:52 ` [PATCH 0/3] Documentation : hypercalls Raghavendra K T
@ 2012-08-09 18:31 ` Marcelo Tosatti
2012-08-11 9:59 ` Raghavendra K T
2012-08-13 20:40 ` Marcelo Tosatti
5 siblings, 1 reply; 9+ messages in thread
From: Marcelo Tosatti @ 2012-08-09 18:31 UTC (permalink / raw)
To: Raghavendra K T
Cc: Rob Landley, linux-kernel, linux-doc, Alexander Graf,
Randy Dunlap, KVM, H. Peter Anvin, Gleb Natapov, Ingo Molnar,
Avi Kivity, Jan Kiszka, X86, Thomas Gleixner
On Tue, Aug 07, 2012 at 01:09:46PM +0530, Raghavendra K T wrote:
> This is the hypercall documentation patch series
> First patch covers KVM specific hypercall information.
>
> second patch is has typo fix for vmcall instruction
> comment in kvm_para.h
>
> Third patch includes a veryful documentation on PowerPC
> hypercalls originally written by Alex
>
> Changes since initial post:
> - Added hypercall ABI (Peter)
> - made KVM_HC_VAPIC_POLL_IRQ active explicitly (Randy)
> - Changed vmrun/vmmrun ==> vmcall/vmmcall (Marcelo)
> - use Linux KVM hypercall instead of ABI (Marcelo)
> - correct PowerPC typo (Alex)
> - Remove value field (Alex)
>
> Raghavendra K T (2):
> Documentation/kvm : Add documentation on hypercalls
> Documentation/header : Correct vmrun to vmcall typo
>
> Alexander Graf (1) :
> Documentation/ppc: Add ppc hypercall documentation
>
> Documentation/virtual/kvm/hypercalls.txt | 66 ++++++++++++++++++++++++++++++
> Documentation/virtual/kvm/ppc-pv.txt | 22 ++++++++++
> arch/x86/include/asm/kvm_para.h | 2 +-
> 3 files changed, 89 insertions(+), 1 deletions(-)
ACK
^ permalink raw reply [flat|nested] 9+ messages in thread* Re: [PATCH 0/3] Documentation : hypercalls
2012-08-09 18:31 ` Marcelo Tosatti
@ 2012-08-11 9:59 ` Raghavendra K T
0 siblings, 0 replies; 9+ messages in thread
From: Raghavendra K T @ 2012-08-11 9:59 UTC (permalink / raw)
To: Marcelo Tosatti
Cc: Rob Landley, linux-kernel, linux-doc, Alexander Graf,
Randy Dunlap, KVM, H. Peter Anvin, Gleb Natapov, Ingo Molnar,
Avi Kivity, Jan Kiszka, X86, Thomas Gleixner
On 08/10/2012 12:01 AM, Marcelo Tosatti wrote:
> On Tue, Aug 07, 2012 at 01:09:46PM +0530, Raghavendra K T wrote:
>> This is the hypercall documentation patch series
>> First patch covers KVM specific hypercall information.
>>
>> second patch is has typo fix for vmcall instruction
>> comment in kvm_para.h
>>
>> Third patch includes a veryful documentation on PowerPC
>> hypercalls originally written by Alex
>>
>> Changes since initial post:
>> - Added hypercall ABI (Peter)
>> - made KVM_HC_VAPIC_POLL_IRQ active explicitly (Randy)
>> - Changed vmrun/vmmrun ==> vmcall/vmmcall (Marcelo)
>> - use Linux KVM hypercall instead of ABI (Marcelo)
>> - correct PowerPC typo (Alex)
>> - Remove value field (Alex)
>>
>> Raghavendra K T (2):
>> Documentation/kvm : Add documentation on hypercalls
>> Documentation/header : Correct vmrun to vmcall typo
>>
>> Alexander Graf (1) :
>> Documentation/ppc: Add ppc hypercall documentation
>>
>> Documentation/virtual/kvm/hypercalls.txt | 66 ++++++++++++++++++++++++++++++
>> Documentation/virtual/kvm/ppc-pv.txt | 22 ++++++++++
>> arch/x86/include/asm/kvm_para.h | 2 +-
>> 3 files changed, 89 insertions(+), 1 deletions(-)
>
> ACK
>
>
Thank you Marcelo.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] Documentation : hypercalls
2012-08-07 7:39 [PATCH 0/3] Documentation : hypercalls Raghavendra K T
` (4 preceding siblings ...)
2012-08-09 18:31 ` Marcelo Tosatti
@ 2012-08-13 20:40 ` Marcelo Tosatti
5 siblings, 0 replies; 9+ messages in thread
From: Marcelo Tosatti @ 2012-08-13 20:40 UTC (permalink / raw)
To: Raghavendra K T
Cc: Rob Landley, linux-kernel, linux-doc, Alexander Graf,
Randy Dunlap, KVM, H. Peter Anvin, Gleb Natapov, Ingo Molnar,
Avi Kivity, Jan Kiszka, X86, Thomas Gleixner
On Tue, Aug 07, 2012 at 01:09:46PM +0530, Raghavendra K T wrote:
> This is the hypercall documentation patch series
> First patch covers KVM specific hypercall information.
>
> second patch is has typo fix for vmcall instruction
> comment in kvm_para.h
>
> Third patch includes a veryful documentation on PowerPC
> hypercalls originally written by Alex
>
> Changes since initial post:
> - Added hypercall ABI (Peter)
> - made KVM_HC_VAPIC_POLL_IRQ active explicitly (Randy)
> - Changed vmrun/vmmrun ==> vmcall/vmmcall (Marcelo)
> - use Linux KVM hypercall instead of ABI (Marcelo)
> - correct PowerPC typo (Alex)
> - Remove value field (Alex)
>
> Raghavendra K T (2):
> Documentation/kvm : Add documentation on hypercalls
> Documentation/header : Correct vmrun to vmcall typo
>
> Alexander Graf (1) :
> Documentation/ppc: Add ppc hypercall documentation
>
> Documentation/virtual/kvm/hypercalls.txt | 66 ++++++++++++++++++++++++++++++
> Documentation/virtual/kvm/ppc-pv.txt | 22 ++++++++++
> arch/x86/include/asm/kvm_para.h | 2 +-
> 3 files changed, 89 insertions(+), 1 deletions(-)
Applied, thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread