From bc5b27a73dfacf52e44f4a64ef4e4620f83687c6 Mon Sep 17 00:00:00 2001 From: "yuhong.tao@intel.com" Date: Fri, 7 Dec 2018 19:16:49 +0800 Subject: [PATCH] tools: acrnctl: increase STOP_TIMEOUT to 30s when reset VM The 'acrnctl reset' is implemented by a stop/start sequence. Reset failure was observed since UOS is not able to shutdown within default 10s timeout. This commit increased the default timeout to be 30s, and added an explicit error message if 'acrnctl reset' due to UOS shutdown timeout. Tracked-On: #2016 Signed-off-by: Tao Yuhong Reviewed-by: Yan, Like --- tools/acrn-manager/acrnctl.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tools/acrn-manager/acrnctl.c b/tools/acrn-manager/acrnctl.c index 5b3bef7c2..140018fab 100644 --- a/tools/acrn-manager/acrnctl.c +++ b/tools/acrn-manager/acrnctl.c @@ -40,7 +40,7 @@ #define RESUME_DESC "Resume virtual machine from suspend state" #define RESET_DESC "Stop and then start virtual machine VM_NAME" -#define STOP_TIMEOUT 10U +#define STOP_TIMEOUT 30U struct acrnctl_cmd { const char *cmd; @@ -600,8 +600,10 @@ static int wait_vm_stop(const char * vmname, unsigned int timeout) printf("%s: vm %s not found\n", __func__, vmname); return -1; } else { - if (s->state == VM_CREATED) + if (s->state == VM_CREATED) { + sleep(2); return 0; + } } sleep(1); @@ -623,16 +625,13 @@ static int acrnctl_do_reset(int argc, char *argv[]) } switch(s->state) { - case VM_CREATED: - start_vm(argv[i]); - break; case VM_STARTED: case VM_SUSPENDED: stop_vm(argv[i]); if (wait_vm_stop(argv[i], STOP_TIMEOUT)) { - printf("Failed to stop %s in %u sec\n", + printf("Failed to stop %s in %u sec, reset failed\n", argv[i], STOP_TIMEOUT); - break; + return -1; } start_vm(argv[i]); break;