Lines Matching refs:pvc
3505 static bool can_piggyback(struct kvmppc_vcore *pvc, struct core_info *cip, in can_piggyback() argument
3508 if (cip->total_threads + pvc->num_threads > target_threads) in can_piggyback()
3511 return can_dynamic_split(pvc, cip); in can_piggyback()
3536 struct kvmppc_vcore *pvc, *vcnext; in collect_piggybacks() local
3539 list_for_each_entry_safe(pvc, vcnext, &lp->list, preempt_list) { in collect_piggybacks()
3540 if (!spin_trylock(&pvc->lock)) in collect_piggybacks()
3542 prepare_threads(pvc); in collect_piggybacks()
3543 if (!pvc->n_runnable || !pvc->kvm->arch.mmu_ready) { in collect_piggybacks()
3544 list_del_init(&pvc->preempt_list); in collect_piggybacks()
3545 if (pvc->runner == NULL) { in collect_piggybacks()
3546 pvc->vcore_state = VCORE_INACTIVE; in collect_piggybacks()
3547 kvmppc_core_end_stolen(pvc, mftb()); in collect_piggybacks()
3549 spin_unlock(&pvc->lock); in collect_piggybacks()
3552 if (!can_piggyback(pvc, cip, target_threads)) { in collect_piggybacks()
3553 spin_unlock(&pvc->lock); in collect_piggybacks()
3556 kvmppc_core_end_stolen(pvc, mftb()); in collect_piggybacks()
3557 pvc->vcore_state = VCORE_PIGGYBACK; in collect_piggybacks()
3716 struct kvmppc_vcore *pvc; in kvmppc_run_core() local
3796 pvc = core_info.vc[sub]; in kvmppc_run_core()
3798 kvmppc_vcore_preempt(pvc); in kvmppc_run_core()
3799 spin_unlock(&pvc->lock); in kvmppc_run_core()
3891 pvc = core_info.vc[sub]; in kvmppc_run_core()
3892 pvc->pcpu = pcpu + thr; in kvmppc_run_core()
3893 for_each_runnable_thread(i, vcpu, pvc) { in kvmppc_run_core()
3902 kvmppc_start_thread(vcpu, pvc); in kvmppc_run_core()
3903 kvmppc_update_vpa_dispatch(vcpu, pvc); in kvmppc_run_core()
3914 kvmppc_start_thread(NULL, pvc); in kvmppc_run_core()
4019 pvc = core_info.vc[sub]; in kvmppc_run_core()
4020 post_guest_process(pvc, pvc == vc); in kvmppc_run_core()