aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2011-12-20 10:34:22 -0500
committerAvi Kivity <avi@redhat.com>2012-04-08 05:51:04 -0400
commit94fa9d9927627a948cef3eff7ebd228dcab5a316 (patch)
treedc0ec378616a6250bca86caf3b7881eba10b24cc
parent043cc4d724da6bb9e4f417c735accec58dfa40bf (diff)
KVM: PPC: booke: add booke-level vcpu load/put
This gives us a place to put load/put actions that correspond to code that is booke-specific but not specific to a particular core. Signed-off-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Alexander Graf <agraf@suse.de> Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r--arch/powerpc/kvm/44x.c3
-rw-r--r--arch/powerpc/kvm/booke.c8
-rw-r--r--arch/powerpc/kvm/booke.h3
-rw-r--r--arch/powerpc/kvm/e500.c3
4 files changed, 17 insertions, 0 deletions
diff --git a/arch/powerpc/kvm/44x.c b/arch/powerpc/kvm/44x.c
index 7b612a76c701..879a1a70acd0 100644
--- a/arch/powerpc/kvm/44x.c
+++ b/arch/powerpc/kvm/44x.c
@@ -29,15 +29,18 @@
29#include <asm/kvm_ppc.h> 29#include <asm/kvm_ppc.h>
30 30
31#include "44x_tlb.h" 31#include "44x_tlb.h"
32#include "booke.h"
32 33
33void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu) 34void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
34{ 35{
36 kvmppc_booke_vcpu_load(vcpu, cpu);
35 kvmppc_44x_tlb_load(vcpu); 37 kvmppc_44x_tlb_load(vcpu);
36} 38}
37 39
38void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu) 40void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu)
39{ 41{
40 kvmppc_44x_tlb_put(vcpu); 42 kvmppc_44x_tlb_put(vcpu);
43 kvmppc_booke_vcpu_put(vcpu);
41} 44}
42 45
43int kvmppc_core_check_processor_compat(void) 46int kvmppc_core_check_processor_compat(void)
diff --git a/arch/powerpc/kvm/booke.c b/arch/powerpc/kvm/booke.c
index ee9e1ee9c858..a2456c7a1d87 100644
--- a/arch/powerpc/kvm/booke.c
+++ b/arch/powerpc/kvm/booke.c
@@ -968,6 +968,14 @@ void kvmppc_decrementer_func(unsigned long data)
968 kvmppc_set_tsr_bits(vcpu, TSR_DIS); 968 kvmppc_set_tsr_bits(vcpu, TSR_DIS);
969} 969}
970 970
971void kvmppc_booke_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
972{
973}
974
975void kvmppc_booke_vcpu_put(struct kvm_vcpu *vcpu)
976{
977}
978
971int __init kvmppc_booke_init(void) 979int __init kvmppc_booke_init(void)
972{ 980{
973 unsigned long ivor[16]; 981 unsigned long ivor[16];
diff --git a/arch/powerpc/kvm/booke.h b/arch/powerpc/kvm/booke.h
index 2fe202705a3f..05d1d99428ce 100644
--- a/arch/powerpc/kvm/booke.h
+++ b/arch/powerpc/kvm/booke.h
@@ -71,4 +71,7 @@ void kvmppc_save_guest_spe(struct kvm_vcpu *vcpu);
71/* high-level function, manages flags, host state */ 71/* high-level function, manages flags, host state */
72void kvmppc_vcpu_disable_spe(struct kvm_vcpu *vcpu); 72void kvmppc_vcpu_disable_spe(struct kvm_vcpu *vcpu);
73 73
74void kvmppc_booke_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
75void kvmppc_booke_vcpu_put(struct kvm_vcpu *vcpu);
76
74#endif /* __KVM_BOOKE_H__ */ 77#endif /* __KVM_BOOKE_H__ */
diff --git a/arch/powerpc/kvm/e500.c b/arch/powerpc/kvm/e500.c
index ddcd896fa2ff..2d5fe04d5eec 100644
--- a/arch/powerpc/kvm/e500.c
+++ b/arch/powerpc/kvm/e500.c
@@ -36,6 +36,7 @@ void kvmppc_core_load_guest_debugstate(struct kvm_vcpu *vcpu)
36 36
37void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu) 37void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
38{ 38{
39 kvmppc_booke_vcpu_load(vcpu, cpu);
39 kvmppc_e500_tlb_load(vcpu, cpu); 40 kvmppc_e500_tlb_load(vcpu, cpu);
40} 41}
41 42
@@ -47,6 +48,8 @@ void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu)
47 if (vcpu->arch.shadow_msr & MSR_SPE) 48 if (vcpu->arch.shadow_msr & MSR_SPE)
48 kvmppc_vcpu_disable_spe(vcpu); 49 kvmppc_vcpu_disable_spe(vcpu);
49#endif 50#endif
51
52 kvmppc_booke_vcpu_put(vcpu);
50} 53}
51 54
52int kvmppc_core_check_processor_compat(void) 55int kvmppc_core_check_processor_compat(void)