Lines Matching defs:vcpu

41  * Each vcpu keeps one vcpu_id_table.
98 * both vcpu and pcpu know this mapping.
139 vcpu_e500->vcpu.arch.shadow_pid = kvmppc_e500_get_sid(vcpu_e500,
140 get_cur_as(&vcpu_e500->vcpu),
141 get_cur_pid(&vcpu_e500->vcpu),
142 get_cur_pr(&vcpu_e500->vcpu), 1);
143 vcpu_e500->vcpu.arch.shadow_pid1 = kvmppc_e500_get_sid(vcpu_e500,
144 get_cur_as(&vcpu_e500->vcpu), 0,
145 get_cur_pr(&vcpu_e500->vcpu), 1);
149 /* Invalidate all mappings on vcpu */
158 /* Invalidate one ID mapping on vcpu */
177 * Map guest (vcpu,AS,ID,PR) to physical core shadow id.
214 unsigned int kvmppc_e500_get_tlb_stid(struct kvm_vcpu *vcpu,
217 return kvmppc_e500_get_sid(to_e500(vcpu), get_tlb_ts(gtlbe),
218 get_tlb_tid(gtlbe), get_cur_pr(vcpu), 0);
221 void kvmppc_set_pid(struct kvm_vcpu *vcpu, u32 pid)
223 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
225 if (vcpu->arch.pid != pid) {
226 vcpu_e500->pid[0] = vcpu->arch.pid = pid;
293 void kvmppc_mmu_msr_notify(struct kvm_vcpu *vcpu, u32 old_msr)
296 kvmppc_e500_recalc_shadow_pid(to_e500(vcpu));
299 static void kvmppc_core_vcpu_load_e500(struct kvm_vcpu *vcpu, int cpu)
301 kvmppc_booke_vcpu_load(vcpu, cpu);
304 kvmppc_e500_recalc_shadow_pid(to_e500(vcpu));
307 static void kvmppc_core_vcpu_put_e500(struct kvm_vcpu *vcpu)
310 if (vcpu->arch.shadow_msr & MSR_SPE)
311 kvmppc_vcpu_disable_spe(vcpu);
314 kvmppc_booke_vcpu_put(vcpu);
346 int kvmppc_core_vcpu_setup(struct kvm_vcpu *vcpu)
348 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
353 vcpu->arch.pvr = mfspr(SPRN_PVR);
356 vcpu->arch.cpu_type = KVM_CPU_E500V2;
361 static int kvmppc_core_get_sregs_e500(struct kvm_vcpu *vcpu,
364 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
375 sregs->u.e.ivor_high[0] = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL];
376 sregs->u.e.ivor_high[1] = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA];
377 sregs->u.e.ivor_high[2] = vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND];
379 vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR];
381 kvmppc_get_sregs_ivor(vcpu, sregs);
382 kvmppc_get_sregs_e500_tlb(vcpu, sregs);
386 static int kvmppc_core_set_sregs_e500(struct kvm_vcpu *vcpu,
389 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
398 ret = kvmppc_set_sregs_e500_tlb(vcpu, sregs);
406 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_UNAVAIL] =
408 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_DATA] =
410 vcpu->arch.ivor[BOOKE_IRQPRIO_SPE_FP_ROUND] =
415 vcpu->arch.ivor[BOOKE_IRQPRIO_PERFORMANCE_MONITOR] =
419 return kvmppc_set_sregs_ivor(vcpu, sregs);
422 static int kvmppc_get_one_reg_e500(struct kvm_vcpu *vcpu, u64 id,
425 int r = kvmppc_get_one_reg_e500_tlb(vcpu, id, val);
429 static int kvmppc_set_one_reg_e500(struct kvm_vcpu *vcpu, u64 id,
432 int r = kvmppc_get_one_reg_e500_tlb(vcpu, id, val);
436 static int kvmppc_core_vcpu_create_e500(struct kvm_vcpu *vcpu)
441 BUILD_BUG_ON(offsetof(struct kvmppc_vcpu_e500, vcpu) != 0);
442 vcpu_e500 = to_e500(vcpu);
451 vcpu->arch.shared = (void*)__get_free_page(GFP_KERNEL|__GFP_ZERO);
452 if (!vcpu->arch.shared) {
466 static void kvmppc_core_vcpu_free_e500(struct kvm_vcpu *vcpu)
468 struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
470 free_page((unsigned long)vcpu->arch.shared);