瀏覽代碼

KVM: PPC: Expose magic page support to guest

Now that we have the shared page in place and the MMU code knows about
the magic page, we can expose that capability to the guest!

Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Avi Kivity <avi@redhat.com>
Alexander Graf 15 年之前
父節點
當前提交
5fc87407b5
共有 2 個文件被更改,包括 13 次插入0 次删除
  1. 2 0
      arch/powerpc/include/asm/kvm_para.h
  2. 11 0
      arch/powerpc/kvm/powerpc.c

+ 2 - 0
arch/powerpc/include/asm/kvm_para.h

@@ -45,6 +45,8 @@ struct kvm_vcpu_arch_shared {
 #define HC_EV_SUCCESS		0
 #define HC_EV_SUCCESS		0
 #define HC_EV_UNIMPLEMENTED	12
 #define HC_EV_UNIMPLEMENTED	12
 
 
+#define KVM_FEATURE_MAGIC_PAGE	1
+
 #ifdef __KERNEL__
 #ifdef __KERNEL__
 
 
 #ifdef CONFIG_KVM_GUEST
 #ifdef CONFIG_KVM_GUEST

+ 11 - 0
arch/powerpc/kvm/powerpc.c

@@ -61,8 +61,19 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu)
 	}
 	}
 
 
 	switch (nr) {
 	switch (nr) {
+	case HC_VENDOR_KVM | KVM_HC_PPC_MAP_MAGIC_PAGE:
+	{
+		vcpu->arch.magic_page_pa = param1;
+		vcpu->arch.magic_page_ea = param2;
+
+		r = HC_EV_SUCCESS;
+		break;
+	}
 	case HC_VENDOR_KVM | KVM_HC_FEATURES:
 	case HC_VENDOR_KVM | KVM_HC_FEATURES:
 		r = HC_EV_SUCCESS;
 		r = HC_EV_SUCCESS;
+#if defined(CONFIG_PPC_BOOK3S) /* XXX Missing magic page on BookE */
+		r2 |= (1 << KVM_FEATURE_MAGIC_PAGE);
+#endif
 
 
 		/* Second return value is in r4 */
 		/* Second return value is in r4 */
 		kvmppc_set_gpr(vcpu, 4, r2);
 		kvmppc_set_gpr(vcpu, 4, r2);