Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 563a1e93 authored by Paul Mackerras's avatar Paul Mackerras Committed by Alexander Graf
Browse files

KVM: PPC: Book3S HV: Fix preempted vcore stolen time calculation



Whenever a vcore state is VCORE_PREEMPT we need to be counting stolen
time for it.  This currently isn't the case when we have a vcore that
no longer has any runnable threads in it but still has a runner task,
so we do an explicit call to kvmppc_core_start_stolen() in that case.

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
parent 402813fe
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -2283,9 +2283,14 @@ static void post_guest_process(struct kvmppc_vcore *vc, bool is_master)
	}
	list_del_init(&vc->preempt_list);
	if (!is_master) {
		vc->vcore_state = vc->runner ? VCORE_PREEMPT : VCORE_INACTIVE;
		if (still_running > 0)
		if (still_running > 0) {
			kvmppc_vcore_preempt(vc);
		} else if (vc->runner) {
			vc->vcore_state = VCORE_PREEMPT;
			kvmppc_core_start_stolen(vc);
		} else {
			vc->vcore_state = VCORE_INACTIVE;
		}
		if (vc->n_runnable > 0 && vc->runner == NULL) {
			/* make sure there's a candidate runner awake */
			vcpu = list_first_entry(&vc->runnable_threads,