diff --git a/hypervisor/arch/x86/guest/pm.c b/hypervisor/arch/x86/guest/pm.c index 7f4ec36f1..b14333740 100644 --- a/hypervisor/arch/x86/guest/pm.c +++ b/hypervisor/arch/x86/guest/pm.c @@ -160,7 +160,7 @@ static inline void enter_s5(struct acrn_vm *vm, uint32_t pm1a_cnt_val, uint32_t if (is_sos_vm(vm)) { save_s5_reg_val(pm1a_cnt_val, pm1b_cnt_val); } - + pause_vm(vm); (void)shutdown_vm(vm); } diff --git a/hypervisor/arch/x86/guest/vm.c b/hypervisor/arch/x86/guest/vm.c index 2de4a4e0d..e71fda1c3 100644 --- a/hypervisor/arch/x86/guest/vm.c +++ b/hypervisor/arch/x86/guest/vm.c @@ -584,8 +584,6 @@ int32_t shutdown_vm(struct acrn_vm *vm) struct acrn_vm_config *vm_config = NULL; int32_t ret = 0; - pause_vm(vm); - /* Only allow shutdown paused vm */ if (vm->state == VM_PAUSED) { vm->state = VM_POWERED_OFF; diff --git a/hypervisor/arch/x86/guest/vm_reset.c b/hypervisor/arch/x86/guest/vm_reset.c index 18964dbf7..bd7fade2a 100644 --- a/hypervisor/arch/x86/guest/vm_reset.c +++ b/hypervisor/arch/x86/guest/vm_reset.c @@ -39,6 +39,7 @@ void triple_fault_shutdown_vm(struct acrn_vcpu *vcpu) struct acrn_vm *pl_vm = get_vm_from_vmid(vm_id); if (!is_poweroff_vm(pl_vm) && is_postlaunched_vm(pl_vm) && !is_rt_vm(pl_vm)) { + pause_vm(pl_vm); (void)shutdown_vm(pl_vm); } }