// VMM Specific options
- shadow_pde->write_through = 0;
- shadow_pde->cache_disable = 0;
- shadow_pde->global_page = 0;
+ shadow_pde->write_through = guest_pde->write_through;
+ shadow_pde->cache_disable = guest_pde->cache_disable;
+ shadow_pde->global_page = guest_pde->global_page;
//
guest_pde->accessed = 1;
}
//set according to VMM policy
- shadow_pte->write_through = 0;
- shadow_pte->cache_disable = 0;
- shadow_pte->global_page = 0;
+ shadow_pte->write_through = large_guest_pde->write_through;
+ shadow_pte->cache_disable = large_guest_pde->cache_disable;
+ shadow_pte->global_page = large_guest_pde->global_page;
//
} else {
shadow_pte->user_page = guest_pte->user_page;
//set according to VMM policy
- shadow_pte->write_through = 0;
- shadow_pte->cache_disable = 0;
- shadow_pte->global_page = 0;
+ shadow_pte->write_through = guest_pte->write_through;
+ shadow_pte->cache_disable = guest_pte->cache_disable;
+ shadow_pte->global_page = guest_pte->global_page;
//
guest_pte->accessed = 1;
shadow_pml4e->present = 1;
shadow_pml4e->user_page = guest_pml4e->user_page;
shadow_pml4e->writable = guest_pml4e->writable;
-
- // VMM Specific options
- shadow_pml4e->write_through = 0;
- shadow_pml4e->cache_disable = 0;
- //
+ shadow_pml4e->cache_disable = guest_pml4e->cache_disable;
+ shadow_pml4e->write_through = guest_pml4e->write_through;
guest_pml4e->accessed = 1;
shadow_pdpe->present = 1;
shadow_pdpe->user_page = guest_pdpe->user_page;
shadow_pdpe->writable = guest_pdpe->writable;
-
- // VMM Specific options
- shadow_pdpe->write_through = 0;
- shadow_pdpe->cache_disable = 0;
- //
+ shadow_pdpe->write_through = guest_pdpe->write_through;
+ shadow_pdpe->cache_disable = guest_pdpe->cache_disable;
+
guest_pdpe->accessed = 1;
}
// VMM Specific options
- shadow_pde->write_through = 0;
- shadow_pde->cache_disable = 0;
- shadow_pde->global_page = 0;
+ shadow_pde->write_through = guest_pde->write_through;
+ shadow_pde->cache_disable = guest_pde->cache_disable;
+ shadow_pde->global_page = guest_pde->global_page;
//
guest_pde->accessed = 1;
shadow_pte->user_page = guest_pte->user_page;
//set according to VMM policy
- shadow_pte->write_through = 0;
- shadow_pte->cache_disable = 0;
- shadow_pte->global_page = 0;
+ shadow_pte->write_through = guest_pte->write_through;
+ shadow_pte->cache_disable = guest_pte->cache_disable;
+ shadow_pte->global_page = guest_pte->global_page;
//
guest_pte->accessed = 1;
// Inject a machine check in the guest
PrintDebug("Invalid Guest Address in page table (0x%p)\n", (void *)guest_fault_pa);
v3_raise_exception(info, MC_EXCEPTION);
- return -1;
+ return 0;
}
if (shadow_pte_access == PT_ACCESS_OK) {
}
//set according to VMM policy
- shadow_pte->write_through = 0;
- shadow_pte->cache_disable = 0;
- shadow_pte->global_page = 0;
+ shadow_pte->write_through = large_guest_pde->write_through;
+ shadow_pte->cache_disable = large_guest_pde->cache_disable;
+ shadow_pte->global_page = large_guest_pde->global_page;
//
} else {