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.


Clear guest memory to 0 at init time.
[palacios.git] / palacios / src / palacios / vmm_paging.c
index 1030fe2..972c800 100644 (file)
@@ -46,7 +46,7 @@ static pt_entry_type_t pte64_lookup(pte64_t * pt, addr_t addr, addr_t * entry);
 
 
 
-#ifndef CONFIG_DEBUG_SHADOW_PAGING
+#ifndef V3_CONFIG_DEBUG_SHADOW_PAGING
 #undef PrintDebug
 #define PrintDebug(fmt, args...)
 #endif
@@ -67,11 +67,11 @@ void delete_page_tables_32(pde32_t * pde) {
            // We double cast, first to an addr_t to handle 64 bit issues, then to the pointer
       
            PrintDebug("Deleting PT Page %d (%p)\n", i, (void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[i].pt_base_addr));
-           V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[i].pt_base_addr));
+           V3_FreePages((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[i].pt_base_addr), 1);
        }
     }
 
-    V3_FreePage(V3_PAddr(pde));
+    V3_FreePages(V3_PAddr(pde), 1);
 }
 
 void delete_page_tables_32pae(pdpe32pae_t * pdpe) {
@@ -96,13 +96,13 @@ void delete_page_tables_32pae(pdpe32pae_t * pdpe) {
                continue;
            }
 
-           V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[j].pt_base_addr));
+           V3_FreePages((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[j].pt_base_addr), 1);
        }
 
-       V3_FreePage(V3_PAddr(pde));
+       V3_FreePages(V3_PAddr(pde), 1);
     }
 
-    V3_FreePage(V3_PAddr(pdpe));
+    V3_FreePages(V3_PAddr(pdpe), 1);
 }
 
 void delete_page_tables_64(pml4e64_t * pml4) {
@@ -133,16 +133,16 @@ void delete_page_tables_64(pml4e64_t * pml4) {
                    continue;
                }
 
-               V3_FreePage((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[k].pt_base_addr));
+               V3_FreePages((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pde[k].pt_base_addr), 1);
            }
            
-           V3_FreePage(V3_PAddr(pde));
+           V3_FreePages(V3_PAddr(pde), 1);
        }
 
-       V3_FreePage(V3_PAddr(pdpe));
+       V3_FreePages(V3_PAddr(pdpe), 1);
     }
 
-    V3_FreePage(V3_PAddr(pml4));
+    V3_FreePages(V3_PAddr(pml4), 1);
 }
 
 
@@ -971,9 +971,7 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                addr_t large_page_va = 0;
       
                if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
-                   PrintError("Could not get virtual address of Guest Page 4MB (PA=%p)\n", 
-                              (void *)large_page_va);
-                   return -1;
+                   large_page_va = 0 ;
                }
 
 
@@ -1003,9 +1001,7 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                    addr_t page_va;
 
                    if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
-                       PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                  (void *)page_pa);
-                       return -1;
+                       page_va = 0;
                    }
 
                    if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {
@@ -1070,9 +1066,7 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                                    addr_t large_page_va = 0;
              
                                    if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
-                                       PrintDebug("Could not get virtual address of Guest Page 2MB (PA=%p)\n", 
-                                                  (void *)large_page_va);
-
+                                       large_page_va = 0;
                                    }
              
                                    if ((ret == callback(info, PAGE_2MB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1101,9 +1095,7 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                                        addr_t page_va;
                
                                        if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
-                                           PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                                      (void *)page_pa);
-                                           return -1;
+                                           page_va = 0;
                                        }
                
                                        if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {
@@ -1169,9 +1161,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                            addr_t large_page_va = 0;
          
                            if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
-                               PrintDebug("Could not get virtual address of Guest Page 1GB (PA=%p)\n", 
-                                          (void *)large_page_va);
-           
+                               large_page_va = 0;
                            }
          
                            if ((ret == callback(info, PAGE_1GB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1204,9 +1194,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                                        addr_t large_page_va = 0;
              
                                        if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
-                                           PrintDebug("Could not get virtual address of Guest Page 2MB (PA=%p)\n", 
-                                                      (void *)large_page_va);
-
+                                           large_page_va = 0;
                                        }
              
                                        if ((ret == callback(info, PAGE_2MB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1235,9 +1223,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                                            addr_t page_va;
                
                                            if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
-                                               PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                                          (void *)page_pa);
-                                               return -1;
+                                               page_va = 0;
                                            }
                
                                            if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {