kvm: exit halt polling on need_resched() as well

single_task_running() is usually more general than need_resched()
but CFS_BANDWIDTH throttling will use resched_task() when there
is just one task to get the task to block. This was causing
long-need_resched warnings and was likely allowing VMs to
overrun their quota when halt polling.

Signed-off-by: Ben Segall <[email protected]>
Signed-off-by: Venkatesh Srinivas <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
Cc: [email protected]
Reviewed-by: Jim Mattson <[email protected]>
This commit is contained in:
Benjamin Segall authored and Paolo Bonzini committed 2021-05-03 11:25:36 -04:00
1 parent d981dd1549
commit 262de4102c
1 file changed
+2 -1
+2 -1
View File
@@ -2973,7 +2973,8 @@ void kvm_vcpu_block(struct kvm_vcpu *vcpu)
goto out;
}
poll_end = cur = ktime_get();
} while (single_task_running() && ktime_before(cur, stop));
} while (single_task_running() && !need_resched() &&
ktime_before(cur, stop));
}
prepare_to_rcuwait(&vcpu->wait);