Loading arch/powerpc/include/asm/kvm_para.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ struct kvm_vcpu_arch_shared { #define HC_EV_SUCCESS 0 #define HC_EV_UNIMPLEMENTED 12 #define KVM_FEATURE_MAGIC_PAGE 1 #ifdef __KERNEL__ #ifdef CONFIG_KVM_GUEST Loading arch/powerpc/kvm/powerpc.c +11 −0 Original line number Diff line number Diff line Loading @@ -61,8 +61,19 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu) } 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: 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 */ kvmppc_set_gpr(vcpu, 4, r2); Loading Loading
arch/powerpc/include/asm/kvm_para.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ struct kvm_vcpu_arch_shared { #define HC_EV_SUCCESS 0 #define HC_EV_UNIMPLEMENTED 12 #define KVM_FEATURE_MAGIC_PAGE 1 #ifdef __KERNEL__ #ifdef CONFIG_KVM_GUEST Loading
arch/powerpc/kvm/powerpc.c +11 −0 Original line number Diff line number Diff line Loading @@ -61,8 +61,19 @@ int kvmppc_kvm_pv(struct kvm_vcpu *vcpu) } 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: 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 */ kvmppc_set_gpr(vcpu, 4, r2); Loading