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.


added support for memory remapping
[palacios.git] / palacios / src / palacios / vmm_shadow_paging.c
index 8074c16..a3c802f 100644 (file)
@@ -49,19 +49,6 @@ struct shadow_page_data {
 };
 
 
-DEFINE_HASHTABLE_INSERT(add_pte_map, addr_t, addr_t);
-DEFINE_HASHTABLE_SEARCH(find_pte_map, addr_t, addr_t);
-//DEFINE_HASHTABLE_REMOVE(del_pte_map, addr_t, addr_t, 0);
-
-
-
-static uint_t pte_hash_fn(addr_t key) {
-    return hash_long(key, 32);
-}
-
-static int pte_equals(addr_t key1, addr_t key2) {
-    return (key1 == key2);
-}
 
 static struct shadow_page_data * create_new_shadow_pt(struct guest_info * info);
 static void inject_guest_pf(struct guest_info * info, addr_t fault_addr, pf_error_t error_code);
@@ -81,9 +68,6 @@ int v3_init_shadow_page_state(struct guest_info * info) {
     state->guest_cr0 = 0;
 
     INIT_LIST_HEAD(&(state->page_list));
-
-    state->cached_ptes = NULL;
-    state->cached_cr3 = 0;
   
     return 0;
 }
@@ -113,18 +97,14 @@ int v3_activate_shadow_pt(struct guest_info * info) {
 }
 
 
-int v3_activate_passthrough_pt(struct guest_info * info) {
-    // For now... But we need to change this....
-    // As soon as shadow paging becomes active the passthrough tables are hosed
-    // So this will cause chaos if it is called at that time
 
-    info->ctrl_regs.cr3 = *(addr_t*)&(info->direct_map_pt);
-    //PrintError("Activate Passthrough Page tables not implemented\n");
-    return 0;
+// This must flush any caches
+// and reset the cr3 value to the correct value
+int v3_invalidate_shadow_pts(struct guest_info * info) {
+    return v3_activate_shadow_pt(info);
 }
 
 
-
 int v3_handle_shadow_pagefault(struct guest_info * info, addr_t fault_addr, pf_error_t error_code) {
   
     if (v3_get_mem_mode(info) == PHYSICAL_MEM) {