hv: do not sleep a non-RUNNING vcpu

It's meaningless to sleep a non-running vcpu. Add a state check before
sleep the thread object of the vcpu.

Tracked-On: #4178
Signed-off-by: Shuo A Liu <shuo.a.liu@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Shuo A Liu 2019-12-02 19:32:30 +08:00 committed by wenlingz
parent d624eb5e6c
commit 72644ac2b2

View File

@ -702,7 +702,9 @@ void pause_vcpu(struct acrn_vcpu *vcpu, enum vcpu_state new_state)
vcpu->prev_state = vcpu->state;
vcpu->state = new_state;
sleep_thread(&vcpu->thread_obj);
if (vcpu->prev_state == VCPU_RUNNING) {
sleep_thread(&vcpu->thread_obj);
}
if (pcpu_id != get_pcpu_id()) {
while (vcpu->running) {
asm_pause();