X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_paging.c;h=417c2f93515dea880cd57b1b2c2209dd56e7eca7;hb=1b9bba809bf9c1d6ada56c7e4f8910e7afb82557;hp=05d10255d77a102ff1a251349c34d1f4d015d78b;hpb=ea942030159fbf603538bfd9cf4d5c5f29804131;p=palacios.git diff --git a/palacios/src/palacios/vmm_paging.c b/palacios/src/palacios/vmm_paging.c index 05d1025..417c2f9 100644 --- a/palacios/src/palacios/vmm_paging.c +++ b/palacios/src/palacios/vmm_paging.c @@ -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 @@ -656,9 +656,11 @@ static pt_entry_type_t pdpe64_lookup(pdpe64_t * pdp, addr_t addr, addr_t * entry *entry = 0; return PT_ENTRY_NOT_PRESENT; } else if (pdpe_entry->large_page) { - PrintError("1 Gigabyte pages not supported\n"); - V3_ASSERT(0); - return -1; + pdpe64_1GB_t * large_pdp = (pdpe64_1GB_t *)pdpe_entry; + + *entry = BASE_TO_PAGE_ADDR_1GB(large_pdp->page_base_addr); + + return PT_ENTRY_LARGE_PAGE; } else { *entry = BASE_TO_PAGE_ADDR(pdpe_entry->pd_base_addr); return PT_ENTRY_PAGE; @@ -971,9 +973,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 +1003,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 +1068,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 +1097,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 +1163,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 +1196,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 +1225,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) {