Thread (18 messages) 18 messages, 4 authors, 2012-02-17

RE: [PATCH v4 2/3] KVM: PPC: epapr: Add idle hcall support for host

flat view

From: Liu Yu-B13201 <hidden>
Date: 2012-02-17 02:14:26
Also in: kvm

-----Original Message-----
From: Alexander Graf [mailto:agraf@suse.de]
Sent: Thursday, February 16, 2012 6:20 PM
To: Liu Yu-B13201
Cc: <redacted>; <redacted>; <linuxppc-
dev@ozlabs.org>; Wood Scott-B07421; Liu Yu-B13201
Subject: Re: [PATCH v4 2/3] KVM: PPC: epapr: Add idle hcall support for
host
=20
=20
=20
On 16.02.2012, at 10:26, Liu Yu [off-list ref] wrote:
=20
quoted
And add a new flag definition in kvm_ppc_pvinfo to indicate whether
host support EV_IDLE hcall.

Signed-off-by: Liu Yu <redacted>
---
v4:
no change

arch/powerpc/include/asm/kvm_para.h |   14 ++++++++++++--
arch/powerpc/kvm/powerpc.c          |    8 ++++++++
include/linux/kvm.h                 |    2 ++
3 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/include/asm/kvm_para.h
b/arch/powerpc/include/asm/kvm_para.h
index 7b754e7..81a34c9 100644
--- a/arch/powerpc/include/asm/kvm_para.h
+++ b/arch/powerpc/include/asm/kvm_para.h
@@ -75,9 +75,19 @@ struct kvm_vcpu_arch_shared { };
#define KVM_SC_MAGIC_R0        0x4b564d21 /* "KVM!" */
-#define HC_VENDOR_KVM        (42 << 16)
+
+#include <asm/epapr_hcalls.h>
+
+/* ePAPR Hypercall Vendor ID */
+#define HC_VENDOR_EPAPR        (EV_EPAPR_VENDOR_ID << 16)
+#define HC_VENDOR_KVM        (EV_KVM_VENDOR_ID << 16)
+
+/* ePAPR Hypercall Token */
+#define HC_EV_IDLE        EV_IDLE
+
+/* ePAPR Hypercall Return Codes */
#define HC_EV_SUCCESS        0
-#define HC_EV_UNIMPLEMENTED    12
+#define HC_EV_UNIMPLEMENTED    EV_UNIMPLEMENTED

#define KVM_FEATURE_MAGIC_PAGE    1
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c
index 0e21d15..03ebd5d 100644
--- a/arch/powerpc/kvm/powerpc.c
+++ b/arch/powerpc/kvm/powerpc.c
@@ -81,6 +81,10 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu)

       /* Second return value is in r4 */
       break;
+    case HC_VENDOR_EPAPR | HC_EV_IDLE:
+        r =3D HC_EV_SUCCESS;
+        kvm_vcpu_block(vcpu);
+        break;
   default:
       r =3D HC_EV_UNIMPLEMENTED;
       break;
@@ -746,6 +750,10 @@ static int kvm_vm_ioctl_get_pvinfo(struct
kvm_ppc_pvinfo *pvinfo)
quoted
   pvinfo->hcall[2] =3D inst_sc;
   pvinfo->hcall[3] =3D inst_nop;

+#ifdef CONFIG_BOOKE
+    pvinfo->flags |=3D KVM_PPC_PVINFO_FLAGS_EV_IDLE; #endif
+
   return 0;
}>=20
Why limit it to booke? The less ifdefs our code has, the better :)
The code here tells userspace that kvm support ev_idle.
But I'm not sure if the ev_idle code works for other platforms.

So I think we should keep the ifdef until other platform test the code :)

Thanks,
Yu
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help