diff options
author | Hollis Blanchard <hollisb@us.ibm.com> | 2008-12-02 15:51:56 -0600 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2008-12-31 16:55:09 +0200 |
commit | c5fbdffbda79254047ec83b09c1a61a3655d052a (patch) | |
tree | 4fb1ba38fe722d514b62c284cc618768856eedf8 /arch/powerpc/kvm/44x.c | |
parent | 7924bd41097ae8991c6d38cef8b1e4058e30d198 (diff) | |
download | op-kernel-dev-c5fbdffbda79254047ec83b09c1a61a3655d052a.zip op-kernel-dev-c5fbdffbda79254047ec83b09c1a61a3655d052a.tar.gz |
KVM: ppc: save and restore guest mappings on context switch
Store shadow TLB entries in memory, but only use it on host context switch
(instead of every guest entry). This improves performance for most workloads on
440 by reducing the guest TLB miss rate.
Signed-off-by: Hollis Blanchard <hollisb@us.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/powerpc/kvm/44x.c')
-rw-r--r-- | arch/powerpc/kvm/44x.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/arch/powerpc/kvm/44x.c b/arch/powerpc/kvm/44x.c index 05d72fc..a66bec5 100644 --- a/arch/powerpc/kvm/44x.c +++ b/arch/powerpc/kvm/44x.c @@ -96,15 +96,12 @@ void kvmppc_core_load_guest_debugstate(struct kvm_vcpu *vcpu) void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu) { + kvmppc_44x_tlb_load(vcpu); } void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu) { - /* XXX Since every guest uses TS=1 TID=0/1 mappings, we can't leave any TLB - * entries around when we're descheduled, so we must completely flush the - * TLB of all guest mappings. On the other hand, if there is only one - * guest, this flush is completely unnecessary. */ - _tlbia(); + kvmppc_44x_tlb_put(vcpu); } int kvmppc_core_check_processor_compat(void) |