X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fsvm.c;h=c3bce64f05c9140ced4da9132c05d3bb8beed90d;hb=cf780b903a02efc700d51dbadcc90115f016256c;hp=f366a762e4654f12ae61e1646c921a89ea647f73;hpb=a7b07dc7f3bd9c28b0fbfb3c685a306326d56e76;p=palacios.releases.git diff --git a/palacios/src/palacios/svm.c b/palacios/src/palacios/svm.c index f366a76..c3bce64 100644 --- a/palacios/src/palacios/svm.c +++ b/palacios/src/palacios/svm.c @@ -1,4 +1,3 @@ - /* * This file is part of the Palacios Virtual Machine Monitor developed * by the V3VEE Project with funding from the United States National @@ -36,6 +35,8 @@ #include #include +#include + #include @@ -86,11 +87,12 @@ static int v3_svm_handle_efer_write(struct guest_info * core, uint_t msr, struct int status; // Call arch-independent handler - if ((status = v3_handle_efer_write(core, msr, src, priv_data)) != 0) + if ((status = v3_handle_efer_write(core, msr, src, priv_data)) != 0) { return status; + } // SVM-specific code - if (core->shdw_pg_mode == NESTED_PAGING) { + { // Ensure that hardware visible EFER.SVME bit is set (SVM Enable) struct efer_64 * hw_efer = (struct efer_64 *)&(core->ctrl_regs.efer); hw_efer->svme = 1; @@ -691,6 +693,8 @@ int v3_start_svm_guest(struct guest_info * info) { break; } + v3_wait_at_barrier(info); + if (info->vm_info->run_state == VM_STOPPED) { info->core_run_state = CORE_STOPPED;