From: Jack Lange Date: Tue, 23 Nov 2010 23:57:57 +0000 (-0600) Subject: updated stop procedure to handle multiple cores X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=d962f2be029772be3f21d9bd206ddf2a9f6a1d20;p=palacios.git updated stop procedure to handle multiple cores --- diff --git a/palacios/src/palacios/vmm.c b/palacios/src/palacios/vmm.c index 9e53b34..6bf1a29 100644 --- a/palacios/src/palacios/vmm.c +++ b/palacios/src/palacios/vmm.c @@ -269,16 +269,25 @@ int v3_stop_vm(struct v3_vm_info * vm) { vm->run_state = VM_STOPPED; - while (vm->cores[0].core_run_state != CORE_STOPPED) { - v3_yield(NULL); - } - - // force exit all cores via a cross call/IPI - // Wait for all cores to enter CORE_STOPPED state + while (1) { + int i = 0; + int still_running = 0; + + for (i = 0; i < vm->num_cores; i++) { + if (vm->cores[i].core_run_state != CORE_STOPPED) { + still_running = 1; + } + } + if (still_running == 0) { + break; + } + + v3_yield(NULL); + } return 0; }