Lines Matching refs:pvc
3477 static bool can_piggyback(struct kvmppc_vcore *pvc, struct core_info *cip, in can_piggyback() argument
3480 if (cip->total_threads + pvc->num_threads > target_threads) in can_piggyback()
3483 return can_dynamic_split(pvc, cip); in can_piggyback()
3508 struct kvmppc_vcore *pvc, *vcnext; in collect_piggybacks() local
3511 list_for_each_entry_safe(pvc, vcnext, &lp->list, preempt_list) { in collect_piggybacks()
3512 if (!spin_trylock(&pvc->lock)) in collect_piggybacks()
3514 prepare_threads(pvc); in collect_piggybacks()
3515 if (!pvc->n_runnable || !pvc->kvm->arch.mmu_ready) { in collect_piggybacks()
3516 list_del_init(&pvc->preempt_list); in collect_piggybacks()
3517 if (pvc->runner == NULL) { in collect_piggybacks()
3518 pvc->vcore_state = VCORE_INACTIVE; in collect_piggybacks()
3519 kvmppc_core_end_stolen(pvc, mftb()); in collect_piggybacks()
3521 spin_unlock(&pvc->lock); in collect_piggybacks()
3524 if (!can_piggyback(pvc, cip, target_threads)) { in collect_piggybacks()
3525 spin_unlock(&pvc->lock); in collect_piggybacks()
3528 kvmppc_core_end_stolen(pvc, mftb()); in collect_piggybacks()
3529 pvc->vcore_state = VCORE_PIGGYBACK; in collect_piggybacks()
3688 struct kvmppc_vcore *pvc; in kvmppc_run_core() local
3768 pvc = core_info.vc[sub]; in kvmppc_run_core()
3770 kvmppc_vcore_preempt(pvc); in kvmppc_run_core()
3771 spin_unlock(&pvc->lock); in kvmppc_run_core()
3863 pvc = core_info.vc[sub]; in kvmppc_run_core()
3864 pvc->pcpu = pcpu + thr; in kvmppc_run_core()
3865 for_each_runnable_thread(i, vcpu, pvc) { in kvmppc_run_core()
3874 kvmppc_start_thread(vcpu, pvc); in kvmppc_run_core()
3875 kvmppc_update_vpa_dispatch(vcpu, pvc); in kvmppc_run_core()
3886 kvmppc_start_thread(NULL, pvc); in kvmppc_run_core()
3991 pvc = core_info.vc[sub]; in kvmppc_run_core()
3992 post_guest_process(pvc, pvc == vc); in kvmppc_run_core()