diff --git a/hypervisor/arch/x86/guest/vm.c b/hypervisor/arch/x86/guest/vm.c index 80c15895b..36c3c4d4e 100644 --- a/hypervisor/arch/x86/guest/vm.c +++ b/hypervisor/arch/x86/guest/vm.c @@ -659,8 +659,12 @@ void pause_vm(struct acrn_vm *vm) if (vm->state != VM_PAUSED) { if (is_rt_vm(vm)) { - /* Only when RTVM is powering off by itself, we can pause vcpu */ - if (vm->state == VM_POWERING_OFF) { + /** + * For RTVM, we can only pause its vCPUs when it stays at following states: + * - It is powering off by itself + * - It is created but doesn't start + */ + if ((vm->state == VM_POWERING_OFF) || (vm->state == VM_CREATED)) { foreach_vcpu(i, vm, vcpu) { pause_vcpu(vcpu, VCPU_ZOMBIE); }