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

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

From: Alexander Graf <hidden>
Date: 2012-02-16 10:19:28
Also in: linuxppc-dev


On 16.02.2012, at 10:26, Liu Yu [off-list ref] wrote:
quoted hunk ↗ jump to hunk
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 = HC_EV_SUCCESS;
+        kvm_vcpu_block(vcpu);
+        break;
   default:
       r = HC_EV_UNIMPLEMENTED;
       break;
@@ -746,6 +750,10 @@ static int kvm_vm_ioctl_get_pvinfo(struct kvm_ppc_pvinfo *pvinfo)
   pvinfo->hcall[2] = inst_sc;
   pvinfo->hcall[3] = inst_nop;

+#ifdef CONFIG_BOOKE
Why limit it to booke? The less ifdefs our code has, the better :)

Alex
quoted hunk ↗ jump to hunk
+    pvinfo->flags |= KVM_PPC_PVINFO_FLAGS_EV_IDLE;
+#endif
+
   return 0;
}
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index acbe429..6b2c70e 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -449,6 +449,8 @@ struct kvm_ppc_pvinfo {
   __u8  pad[108];
};

+#define KVM_PPC_PVINFO_FLAGS_EV_IDLE   (1<<0)
+
#define KVMIO 0xAE

/* machine type bits, to be used as argument to KVM_CREATE_VM */
-- 
1.7.0.4


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help