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.


Split telemetry into global and per-core to avoid race printing core telemetry
[palacios.git] / palacios / src / palacios / vmm_paging.c
index 27392cb..972c800 100644 (file)
@@ -46,7 +46,7 @@ static pt_entry_type_t pte64_lookup(pte64_t * pt, addr_t addr, addr_t * entry);
 
 
 
-#ifndef DEBUG_SHADOW_PAGING
+#ifndef V3_CONFIG_DEBUG_SHADOW_PAGING
 #undef PrintDebug
 #define PrintDebug(fmt, args...)
 #endif
@@ -63,15 +63,15 @@ void delete_page_tables_32(pde32_t * pde) {
     PrintDebug("Deleting Page Tables (32) -- PDE (%p)\n", pde);
 
     for (i = 0; i < MAX_PDE32_ENTRIES; i++) {
-       if ((pde[i].present) && (pde[i].large_page == 0)) {
+       if ((pde[i].present == 1) && (pde[i].large_page == 0)) {
            // We double cast, first to an addr_t to handle 64 bit issues, then to the pointer
       
-           V3_FreePage((void *)(addr_t)PAGE_ADDR_4KB(pde[i].pt_base_addr));
+           PrintDebug("Deleting PT Page %d (%p)\n", i, (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) {
@@ -88,7 +88,7 @@ void delete_page_tables_32pae(pdpe32pae_t * pdpe) {
            continue;
        }
 
-       pde32pae_t * pde = (pde32pae_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pdpe[i].pd_base_addr));
+       pde32pae_t * pde = (pde32pae_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pdpe[i].pd_base_addr));
 
        for (j = 0; j < MAX_PDE32PAE_ENTRIES; j++) {
 
@@ -96,13 +96,13 @@ void delete_page_tables_32pae(pdpe32pae_t * pdpe) {
                continue;
            }
 
-           V3_FreePage((void *)(addr_t)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) {
@@ -119,30 +119,30 @@ void delete_page_tables_64(pml4e64_t * pml4) {
            continue;
        }
 
-       pdpe64_t * pdpe = (pdpe64_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pml4[i].pdp_base_addr));
+       pdpe64_t * pdpe = (pdpe64_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pml4[i].pdp_base_addr));
 
        for (j = 0; j < MAX_PDPE64_ENTRIES; j++) {
            if ((pdpe[j].present == 0) || (pdpe[j].large_page == 1)) {
                continue;
            }
 
-           pde64_t * pde = (pde64_t *)V3_VAddr((void *)(addr_t)PAGE_ADDR_4KB(pdpe[j].pd_base_addr));
+           pde64_t * pde = (pde64_t *)V3_VAddr((void *)(addr_t)BASE_TO_PAGE_ADDR_4KB(pdpe[j].pd_base_addr));
 
            for (k = 0; k < MAX_PDE64_ENTRIES; k++) {
                if ((pde[k].present == 0) || (pde[k].large_page == 1)) {
                    continue;
                }
 
-               V3_FreePage((void *)(addr_t)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);
 }
 
 
@@ -952,7 +952,7 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
     int ret; 
   
 
-    if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+    if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
        PrintError("Could not get virtual address of Guest PDE32 (PA=%p)\n", 
                   (void *)guest_pde_pa);
        return -1;
@@ -970,10 +970,8 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                addr_t large_page_pa = (addr_t)guest_pte_pa;
                addr_t large_page_va = 0;
       
-               if (guest_pa_to_host_va(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;
+               if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
+                   large_page_va = 0 ;
                }
 
 
@@ -987,7 +985,7 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                pte32_t * guest_pte = NULL;
                addr_t page_pa;
 
-               if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t*)&guest_pte) == -1) {
+               if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t*)&guest_pte) == -1) {
                    PrintError("Could not get virtual address of Guest PTE32 (PA=%p)\n", 
                               (void *)guest_pte_pa);
                    return -1;
@@ -1002,10 +1000,8 @@ int v3_drill_guest_pt_32(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                } else {
                    addr_t page_va;
 
-                   if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
-                       PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                  (void *)page_pa);
-                       return -1;
+                   if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
+                       page_va = 0;
                    }
 
                    if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {
@@ -1031,7 +1027,7 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
     addr_t guest_pde_pa = 0;
     int ret = 0;
 
-    if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t*)&guest_pdpe) == -1) {
+    if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t*)&guest_pdpe) == -1) {
        PrintError("Could not get virtual address of Guest PDPE32PAE (PA=%p)\n",
                   (void *)guest_pdpe_pa);
        return -1;
@@ -1050,7 +1046,7 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                    pde32pae_t * guest_pde = NULL;
                    addr_t guest_pte_pa = 0;
        
-                   if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+                   if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
                        PrintError("Could not get virtual Address of Guest PDE32PAE (PA=%p)\n", 
                                   (void *)guest_pde_pa);
                        return -1;
@@ -1069,10 +1065,8 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                                    addr_t large_page_pa = (addr_t)guest_pte_pa;
                                    addr_t large_page_va = 0;
              
-                                   if (guest_pa_to_host_va(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);
-
+                                   if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
+                                       large_page_va = 0;
                                    }
              
                                    if ((ret == callback(info, PAGE_2MB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1085,7 +1079,7 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                                    pte32pae_t * guest_pte = NULL;
                                    addr_t page_pa;
 
-                                   if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
+                                   if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
                                        PrintError("Could not get virtual Address of Guest PTE32PAE (PA=%p)\n", 
                                                   (void *)guest_pte_pa);
                                        return -1;
@@ -1100,10 +1094,8 @@ int v3_drill_guest_pt_32pae(struct guest_info * info, v3_reg_t guest_cr3, addr_t
                                    } else {
                                        addr_t page_va;
                
-                                       if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
-                                           PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                                      (void *)page_pa);
-                                           return -1;
+                                       if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
+                                           page_va = 0;
                                        }
                
                                        if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {
@@ -1132,7 +1124,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
     addr_t guest_pdpe_pa = 0;
     int ret = 0;
 
-    if (guest_pa_to_host_va(info, guest_pml4_pa, (addr_t*)&guest_pmle) == -1) {
+    if (v3_gpa_to_hva(info, guest_pml4_pa, (addr_t*)&guest_pmle) == -1) {
        PrintError("Could not get virtual address of Guest PML4E64 (PA=%p)\n", 
                   (void *)guest_pml4_pa);
        return -1;
@@ -1150,7 +1142,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                pdpe64_t * guest_pdp = NULL;
                addr_t guest_pde_pa = 0;
 
-               if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t *)&guest_pdp) == -1) {
+               if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t *)&guest_pdp) == -1) {
                    PrintError("Could not get virtual address of Guest PDPE64 (PA=%p)\n", 
                               (void *)guest_pdpe_pa);
                    return -1;
@@ -1168,10 +1160,8 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                            addr_t large_page_pa = (addr_t)guest_pde_pa;
                            addr_t large_page_va = 0;
          
-                           if (guest_pa_to_host_va(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);
-           
+                           if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
+                               large_page_va = 0;
                            }
          
                            if ((ret == callback(info, PAGE_1GB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1185,7 +1175,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                            pde64_t * guest_pde = NULL;
                            addr_t guest_pte_pa = 0;
 
-                           if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+                           if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
                                PrintError("Could not get virtual address of guest PDE64 (PA=%p)\n", 
                                           (void *)guest_pde_pa);
                                return -1;
@@ -1203,10 +1193,8 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                                        addr_t large_page_pa = (addr_t)guest_pte_pa;
                                        addr_t large_page_va = 0;
              
-                                       if (guest_pa_to_host_va(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);
-
+                                       if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
+                                           large_page_va = 0;
                                        }
              
                                        if ((ret == callback(info, PAGE_2MB, vaddr, large_page_va, large_page_pa, private_data)) != 0) {
@@ -1219,7 +1207,7 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                                        pte64_t * guest_pte = NULL;
                                        addr_t page_pa;
              
-                                       if (guest_pa_to_host_va(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
+                                       if (v3_gpa_to_hva(info, guest_pte_pa, (addr_t *)&guest_pte) == -1) {
                                            PrintError("Could not get virtual address of guest PTE64 (PA=%p)\n", 
                                                       (void *)guest_pte_pa);
                                            return -1;
@@ -1234,10 +1222,8 @@ int v3_drill_guest_pt_64(struct guest_info * info, v3_reg_t guest_cr3, addr_t va
                                        } else {
                                            addr_t page_va;
                
-                                           if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
-                                               PrintError("Could not get virtual address of Guest Page 4KB (PA=%p)\n", 
-                                                          (void *)page_pa);
-                                               return -1;
+                                           if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
+                                               page_va = 0;
                                            }
                
                                            if ((ret = callback(info, PAGE_4KB, vaddr, page_va, page_pa, private_data)) != 0) {
@@ -1277,7 +1263,7 @@ int v3_walk_guest_pt_32(struct guest_info * info,  v3_reg_t guest_cr3,
        return -1;
     }
 
-    if (guest_pa_to_host_va(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
+    if (v3_gpa_to_hva(info, guest_pde_pa, (addr_t *)&guest_pde) == -1) {
        PrintError("Could not get virtual address of Guest PDE32 (PA=%p)\n", 
                   (void *)guest_pde_pa);
        return -1;
@@ -1294,7 +1280,7 @@ int v3_walk_guest_pt_32(struct guest_info * info,  v3_reg_t guest_cr3,
                addr_t large_page_pa = BASE_TO_PAGE_ADDR_4MB(large_pde->page_base_addr);
                addr_t large_page_va = 0;
 
-               if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+               if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
                    PrintDebug("Could not get virtual address of Guest 4MB Page (PA=%p)\n", 
                               (void *)large_page_pa);
                    // We'll let it through for data pages because they may be unmapped or hooked
@@ -1310,7 +1296,7 @@ int v3_walk_guest_pt_32(struct guest_info * info,  v3_reg_t guest_cr3,
                addr_t pte_pa = BASE_TO_PAGE_ADDR(guest_pde[i].pt_base_addr);
                pte32_t * tmp_pte = NULL;
 
-               if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+               if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
                    PrintError("Could not get virtual address of Guest PTE32 (PA=%p)\n", 
                               (void *)pte_pa);
                    return -1;
@@ -1325,7 +1311,7 @@ int v3_walk_guest_pt_32(struct guest_info * info,  v3_reg_t guest_cr3,
                        addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[j].page_base_addr);
                        addr_t page_va = 0;
 
-                       if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+                       if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
                            PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n", 
                                       (void *)page_pa);
                            // We'll let it through for data pages because they may be unmapped or hooked
@@ -1362,7 +1348,7 @@ int v3_walk_guest_pt_32pae(struct guest_info * info,  v3_reg_t guest_cr3,
        return -1;
     }
 
-    if (guest_pa_to_host_va(info, guest_pdpe_pa, (addr_t *)&guest_pdpe) == -1) {
+    if (v3_gpa_to_hva(info, guest_pdpe_pa, (addr_t *)&guest_pdpe) == -1) {
        PrintError("Could not get virtual address of Guest PDPE32PAE (PA=%p)\n", 
                   (void *)guest_pdpe_pa);
        return -1;
@@ -1378,7 +1364,7 @@ int v3_walk_guest_pt_32pae(struct guest_info * info,  v3_reg_t guest_cr3,
            addr_t pde_pa = BASE_TO_PAGE_ADDR(guest_pdpe[i].pd_base_addr);
            pde32pae_t * tmp_pde = NULL;
 
-           if (guest_pa_to_host_va(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
+           if (v3_gpa_to_hva(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
                PrintError("Could not get virtual address of Guest PDE32PAE (PA=%p)\n", 
                           (void *)pde_pa);
                return -1;
@@ -1395,7 +1381,7 @@ int v3_walk_guest_pt_32pae(struct guest_info * info,  v3_reg_t guest_cr3,
                        addr_t large_page_pa = BASE_TO_PAGE_ADDR_2MB(large_pde->page_base_addr);
                        addr_t large_page_va = 0;
            
-                       if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+                       if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
                            PrintDebug("Could not get virtual address of Guest 2MB Page (PA=%p)\n", 
                                       (void *)large_page_pa);
                            // We'll let it through for data pages because they may be unmapped or hooked
@@ -1411,7 +1397,7 @@ int v3_walk_guest_pt_32pae(struct guest_info * info,  v3_reg_t guest_cr3,
                        addr_t pte_pa = BASE_TO_PAGE_ADDR(tmp_pde[j].pt_base_addr);
                        pte32pae_t * tmp_pte = NULL;
            
-                       if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+                       if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
                            PrintError("Could not get virtual address of Guest PTE32PAE (PA=%p)\n", 
                                       (void *)pte_pa);
                            return -1;
@@ -1426,7 +1412,7 @@ int v3_walk_guest_pt_32pae(struct guest_info * info,  v3_reg_t guest_cr3,
                                addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[k].page_base_addr);
                                addr_t page_va = 0;
                
-                               if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+                               if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
                                    PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n", 
                                               (void *)page_pa);
                                    // We'll let it through for data pages because they may be unmapped or hooked
@@ -1469,7 +1455,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
        return -1;
     }
 
-    if (guest_pa_to_host_va(info, guest_pml_pa, (addr_t *)&guest_pml) == -1) {
+    if (v3_gpa_to_hva(info, guest_pml_pa, (addr_t *)&guest_pml) == -1) {
        PrintError("Could not get virtual address of Guest PML464 (PA=%p)\n", 
                   (void *)guest_pml);
        return -1;
@@ -1486,7 +1472,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
            pdpe64_t * tmp_pdpe = NULL;
       
       
-           if (guest_pa_to_host_va(info, pdpe_pa, (addr_t *)&tmp_pdpe) == -1) {
+           if (v3_gpa_to_hva(info, pdpe_pa, (addr_t *)&tmp_pdpe) == -1) {
                PrintError("Could not get virtual address of Guest PDPE64 (PA=%p)\n", 
                           (void *)pdpe_pa);
                return -1;
@@ -1503,7 +1489,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
                        addr_t large_page_pa = BASE_TO_PAGE_ADDR_1GB(large_pdpe->page_base_addr);
                        addr_t large_page_va = 0;
 
-                       if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+                       if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
                            PrintDebug("Could not get virtual address of Guest 1GB page (PA=%p)\n", 
                                       (void *)large_page_pa);
                            // We'll let it through for data pages because they may be unmapped or hooked
@@ -1519,7 +1505,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
                        addr_t pde_pa = BASE_TO_PAGE_ADDR(tmp_pdpe[j].pd_base_addr);
                        pde64_t * tmp_pde = NULL;
            
-                       if (guest_pa_to_host_va(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
+                       if (v3_gpa_to_hva(info, pde_pa, (addr_t *)&tmp_pde) == -1) {
                            PrintError("Could not get virtual address of Guest PDE64 (PA=%p)\n", 
                                       (void *)pde_pa);
                            return -1;
@@ -1536,7 +1522,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
                                    addr_t large_page_pa = BASE_TO_PAGE_ADDR_2MB(large_pde->page_base_addr);
                                    addr_t large_page_va = 0;
                  
-                                   if (guest_pa_to_host_va(info, large_page_pa, &large_page_va) == -1) {
+                                   if (v3_gpa_to_hva(info, large_page_pa, &large_page_va) == -1) {
                                        PrintDebug("Could not get virtual address of Guest 2MB page (PA=%p)\n", 
                                                   (void *)large_page_pa);
                                        // We'll let it through for data pages because they may be unmapped or hooked
@@ -1552,7 +1538,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
                                    addr_t pte_pa = BASE_TO_PAGE_ADDR(tmp_pde[k].pt_base_addr);
                                    pte64_t * tmp_pte = NULL;
                  
-                                   if (guest_pa_to_host_va(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
+                                   if (v3_gpa_to_hva(info, pte_pa, (addr_t *)&tmp_pte) == -1) {
                                        PrintError("Could not get virtual address of Guest PTE64 (PA=%p)\n", 
                                                   (void *)pte_pa);
                                        return -1;
@@ -1567,7 +1553,7 @@ int v3_walk_guest_pt_64(struct guest_info * info,  v3_reg_t guest_cr3,
                                            addr_t page_pa = BASE_TO_PAGE_ADDR(tmp_pte[m].page_base_addr);
                                            addr_t page_va = 0;
                      
-                                           if (guest_pa_to_host_va(info, page_pa, &page_va) == -1) {
+                                           if (v3_gpa_to_hva(info, page_pa, &page_va) == -1) {
                                                PrintDebug("Could not get virtual address of Guest 4KB Page (PA=%p)\n", 
                                                           (void *)page_pa);
                                                // We'll let it through for data pages because they may be unmapped or hooked