Lines Matching refs:pvc

2102 static bool can_piggyback_subcore(struct kvmppc_vcore *pvc,  in can_piggyback_subcore()  argument
2112 if (pvc->kvm != vc->kvm || in can_piggyback_subcore()
2113 pvc->tb_offset != vc->tb_offset || in can_piggyback_subcore()
2114 pvc->pcr != vc->pcr || in can_piggyback_subcore()
2115 pvc->lpcr != vc->lpcr) in can_piggyback_subcore()
2120 (vc->num_threads > 1 || pvc->num_threads > 1)) in can_piggyback_subcore()
2123 n_thr = cip->subcore_threads[sub] + pvc->num_threads; in can_piggyback_subcore()
2130 cip->total_threads += pvc->num_threads; in can_piggyback_subcore()
2132 pvc->master_vcore = vc; in can_piggyback_subcore()
2133 list_del(&pvc->preempt_list); in can_piggyback_subcore()
2134 list_add_tail(&pvc->preempt_list, &cip->vcs[sub]); in can_piggyback_subcore()
2143 static bool can_piggyback(struct kvmppc_vcore *pvc, struct core_info *cip, in can_piggyback() argument
2148 if (cip->total_threads + pvc->num_threads > target_threads) in can_piggyback()
2152 can_piggyback_subcore(pvc, cip, sub)) in can_piggyback()
2155 if (can_dynamic_split(pvc, cip)) in can_piggyback()
2183 struct kvmppc_vcore *pvc, *vcnext; in collect_piggybacks() local
2186 list_for_each_entry_safe(pvc, vcnext, &lp->list, preempt_list) { in collect_piggybacks()
2187 if (!spin_trylock(&pvc->lock)) in collect_piggybacks()
2189 prepare_threads(pvc); in collect_piggybacks()
2190 if (!pvc->n_runnable) { in collect_piggybacks()
2191 list_del_init(&pvc->preempt_list); in collect_piggybacks()
2192 if (pvc->runner == NULL) { in collect_piggybacks()
2193 pvc->vcore_state = VCORE_INACTIVE; in collect_piggybacks()
2194 kvmppc_core_end_stolen(pvc); in collect_piggybacks()
2196 spin_unlock(&pvc->lock); in collect_piggybacks()
2199 if (!can_piggyback(pvc, cip, target_threads)) { in collect_piggybacks()
2200 spin_unlock(&pvc->lock); in collect_piggybacks()
2203 kvmppc_core_end_stolen(pvc); in collect_piggybacks()
2204 pvc->vcore_state = VCORE_PIGGYBACK; in collect_piggybacks()
2279 struct kvmppc_vcore *pvc, *vcnext; in kvmppc_run_core() local
2387 list_for_each_entry(pvc, &core_info.vcs[sub], preempt_list) { in kvmppc_run_core()
2388 pvc->pcpu = pcpu + thr; in kvmppc_run_core()
2389 list_for_each_entry(vcpu, &pvc->runnable_threads, in kvmppc_run_core()
2391 kvmppc_start_thread(vcpu, pvc); in kvmppc_run_core()
2392 kvmppc_create_dtl_entry(vcpu, pvc); in kvmppc_run_core()
2402 if (pvc->master_vcore == pvc && !thr0_done) in kvmppc_run_core()
2403 kvmppc_start_thread(NULL, pvc); in kvmppc_run_core()
2404 thr += pvc->num_threads; in kvmppc_run_core()
2432 list_for_each_entry(pvc, &core_info.vcs[sub], preempt_list) in kvmppc_run_core()
2433 spin_unlock(&pvc->lock); in kvmppc_run_core()
2484 list_for_each_entry_safe(pvc, vcnext, &core_info.vcs[sub], in kvmppc_run_core()
2486 post_guest_process(pvc, pvc == vc); in kvmppc_run_core()