From a4216bc74616b16db43c23e6c6649b1aaad634ef Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Mon, 2 Aug 2010 16:08:22 +0200 Subject: [PATCH] --- yaml --- r: 215827 b: refs/heads/master c: 4cb6b7ea0cd085e6613153ad69608cad6421abcc h: refs/heads/master i: 215825: 0a878341a9983bf41c78a19c45de45f51c0ff2e9 215823: c726cda2c0787737be3805d833b7ea54ce6ca096 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/kvm/book3s.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 286724def40d..897e9b3f8716 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c60b4cf70127941e2f944a7971a7f6b3ecb367ac +refs/heads/master: 4cb6b7ea0cd085e6613153ad69608cad6421abcc diff --git a/trunk/arch/powerpc/kvm/book3s.c b/trunk/arch/powerpc/kvm/book3s.c index 37db61d37041..54ca578239db 100644 --- a/trunk/arch/powerpc/kvm/book3s.c +++ b/trunk/arch/powerpc/kvm/book3s.c @@ -145,6 +145,16 @@ void kvmppc_set_msr(struct kvm_vcpu *vcpu, u64 msr) (old_msr & (MSR_PR|MSR_IR|MSR_DR))) { kvmppc_mmu_flush_segments(vcpu); kvmppc_mmu_map_segment(vcpu, kvmppc_get_pc(vcpu)); + + /* Preload magic page segment when in kernel mode */ + if (!(msr & MSR_PR) && vcpu->arch.magic_page_pa) { + struct kvm_vcpu_arch *a = &vcpu->arch; + + if (msr & MSR_DR) + kvmppc_mmu_map_segment(vcpu, a->magic_page_ea); + else + kvmppc_mmu_map_segment(vcpu, a->magic_page_pa); + } } /* Preload FPU if it's enabled */