diff options
-rw-r--r-- | arch/powerpc/include/asm/kvm_para.h | 2 | ||||
-rw-r--r-- | arch/powerpc/kvm/powerpc.c | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/kvm_para.h b/arch/powerpc/include/asm/kvm_para.h index 0653b0d238b4..7438ab360120 100644 --- a/arch/powerpc/include/asm/kvm_para.h +++ b/arch/powerpc/include/asm/kvm_para.h | |||
@@ -45,6 +45,8 @@ struct kvm_vcpu_arch_shared { | |||
45 | #define HC_EV_SUCCESS 0 | 45 | #define HC_EV_SUCCESS 0 |
46 | #define HC_EV_UNIMPLEMENTED 12 | 46 | #define HC_EV_UNIMPLEMENTED 12 |
47 | 47 | ||
48 | #define KVM_FEATURE_MAGIC_PAGE 1 | ||
49 | |||
48 | #ifdef __KERNEL__ | 50 | #ifdef __KERNEL__ |
49 | 51 | ||
50 | #ifdef CONFIG_KVM_GUEST | 52 | #ifdef CONFIG_KVM_GUEST |
diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c index a4cf4b47e232..fecfe043458d 100644 --- a/arch/powerpc/kvm/powerpc.c +++ b/arch/powerpc/kvm/powerpc.c | |||
@@ -61,8 +61,19 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu) | |||
61 | } | 61 | } |
62 | 62 | ||
63 | switch (nr) { | 63 | switch (nr) { |
64 | case HC_VENDOR_KVM | KVM_HC_PPC_MAP_MAGIC_PAGE: | ||
65 | { | ||
66 | vcpu->arch.magic_page_pa = param1; | ||
67 | vcpu->arch.magic_page_ea = param2; | ||
68 | |||
69 | r = HC_EV_SUCCESS; | ||
70 | break; | ||
71 | } | ||
64 | case HC_VENDOR_KVM | KVM_HC_FEATURES: | 72 | case HC_VENDOR_KVM | KVM_HC_FEATURES: |
65 | r = HC_EV_SUCCESS; | 73 | r = HC_EV_SUCCESS; |
74 | #if defined(CONFIG_PPC_BOOK3S) /* XXX Missing magic page on BookE */ | ||
75 | r2 |= (1 << KVM_FEATURE_MAGIC_PAGE); | ||
76 | #endif | ||
66 | 77 | ||
67 | /* Second return value is in r4 */ | 78 | /* Second return value is in r4 */ |
68 | kvmppc_set_gpr(vcpu, 4, r2); | 79 | kvmppc_set_gpr(vcpu, 4, r2); |