|
@@ -71,6 +71,12 @@ static void kvmppc_core_vcpu_load_pr(struct kvm_vcpu *vcpu, int cpu)
|
|
|
svcpu->in_use = 0;
|
|
|
svcpu_put(svcpu);
|
|
|
#endif
|
|
|
+
|
|
|
+ /* Disable AIL if supported */
|
|
|
+ if (cpu_has_feature(CPU_FTR_HVMODE) &&
|
|
|
+ cpu_has_feature(CPU_FTR_ARCH_207S))
|
|
|
+ mtspr(SPRN_LPCR, mfspr(SPRN_LPCR) & ~LPCR_AIL);
|
|
|
+
|
|
|
vcpu->cpu = smp_processor_id();
|
|
|
#ifdef CONFIG_PPC_BOOK3S_32
|
|
|
current->thread.kvm_shadow_vcpu = vcpu->arch.shadow_vcpu;
|
|
@@ -91,6 +97,12 @@ static void kvmppc_core_vcpu_put_pr(struct kvm_vcpu *vcpu)
|
|
|
|
|
|
kvmppc_giveup_ext(vcpu, MSR_FP | MSR_VEC | MSR_VSX);
|
|
|
kvmppc_giveup_fac(vcpu, FSCR_TAR_LG);
|
|
|
+
|
|
|
+ /* Enable AIL if supported */
|
|
|
+ if (cpu_has_feature(CPU_FTR_HVMODE) &&
|
|
|
+ cpu_has_feature(CPU_FTR_ARCH_207S))
|
|
|
+ mtspr(SPRN_LPCR, mfspr(SPRN_LPCR) | LPCR_AIL_3);
|
|
|
+
|
|
|
vcpu->cpu = -1;
|
|
|
}
|
|
|
|