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.


Convert shadow paging to use 32 PAE (SVM)
Chunxiao Diao, Daniel Zuo, Yuanbo Fan [Mon, 26 May 2014 21:11:44 +0000 (16:11 -0500)]
This changes shadow paging to use, at minimum, 32PAE
shadow page tables.   This makes it possible to place
a guest using shadow paging anywhere in host physical
memory instead of just the first 4 GB

This patch updates SVM so that the shadow pts are activated
and CR4 reads as well as writes are intercepted.

Note that all patches with this name need to be used together
for this to work.

palacios/src/palacios/svm.c

index ede619b..d1125ee 100644 (file)
@@ -290,11 +290,13 @@ static void Init_VMCB_BIOS(vmcb_t * vmcb, struct guest_info * core) {
        PrintDebug(core->vm_info, core, "Created\n");
        
        core->ctrl_regs.cr0 |= 0x80000000;
-       core->ctrl_regs.cr3 = core->direct_map_pt;
+
+        v3_activate_passthrough_pt(core);
 
        ctrl_area->cr_reads.cr0 = 1;
        ctrl_area->cr_writes.cr0 = 1;
-       //ctrl_area->cr_reads.cr4 = 1;
+       //intercept cr4 read so shadow pager can use PAE independently of guest
+       ctrl_area->cr_reads.cr4 = 1;
        ctrl_area->cr_writes.cr4 = 1;
        ctrl_area->cr_reads.cr3 = 1;
        ctrl_area->cr_writes.cr3 = 1;