Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


More init checks to allow graceful fail out when VM cannot be created
[palacios.git] / palacios / src / palacios / vmm_mem_hook.c
index c30e51d..e4e1d98 100644 (file)
@@ -58,7 +58,7 @@ int v3_init_mem_hooks(struct v3_vm_info * vm) {
 
     struct v3_mem_hooks * hooks = &(vm->mem_hooks);
 
-    temp = V3_AllocShadowSafePages(vm,vm->num_cores);
+    temp = V3_AllocPages(vm->num_cores);
 
     if (!temp) {
        PrintError(vm, VCORE_NONE, "Cannot allocate space for mem hooks\n");
@@ -67,7 +67,7 @@ int v3_init_mem_hooks(struct v3_vm_info * vm) {
 
     hooks->hook_hvas_1 = V3_VAddr(temp);
 
-    temp = V3_AllocShadowSafePages(vm,vm->num_cores);
+    temp = V3_AllocPages(vm->num_cores);
 
     if (!temp) {
        PrintError(vm, VCORE_NONE,"Cannot allocate space for mem hooks\n");
@@ -81,6 +81,8 @@ int v3_init_mem_hooks(struct v3_vm_info * vm) {
 
     hooks->reg_table = v3_create_htable(0, mem_hash_fn, mem_eq_fn);
 
+    hooks->inited=1;
+
     return 0;
 }
 
@@ -93,6 +95,10 @@ int v3_deinit_mem_hooks(struct v3_vm_info * vm) {
     struct mem_hook * tmp = NULL;
 
 
+    if (!hooks->inited) { 
+       return 0;
+    }
+
     // This is nasty...
     // We delete the hook info but leave its memory region intact
     // We rely on the memory map to clean up any orphaned regions as a result of this