|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH][VT] make VMX guest 1:1 page table PGD page below 4G
Like IA32 PAE xenlinux, we also need make VMX guest 1:1 page table PGD
page below 4G.
Signed-off-by: Xin Li <xin.b.li@xxxxxxxxx>
Signed-off-by: Chengyuan Li <chengyuan.li@xxxxxxxxx>
Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx>
Signed-off-by: Jun Nakajima <jun.nakajima@xxxxxxxxx>
diff -r bd477fcd32ab tools/libxc/xc_vmx_build.c
--- a/tools/libxc/xc_vmx_build.c Thu Sep 15 04:12:54 2005
+++ b/tools/libxc/xc_vmx_build.c Thu Sep 15 15:04:09 2005
@@ -376,9 +376,21 @@
if ( (mmu = xc_init_mmu_updates(xc_handle, dom)) == NULL )
goto error_out;
+ /* First allocate page for page dir or pdpt */
+ ppt_alloc = (vpt_start - dsi.v_start) >> PAGE_SHIFT;
+ if ( page_array[ppt_alloc] > 0xfffff )
+ {
+ unsigned long nmfn;
+ nmfn = xc_make_page_below_4G( xc_handle, dom,
page_array[ppt_alloc] );
+ if ( nmfn == 0 )
+ {
+ fprintf(stderr, "Couldn't get a page below 4GB :-(\n");
+ goto error_out;
+ }
+ page_array[ppt_alloc] = nmfn;
+ }
+
#ifdef __i386__
- /* First allocate page for page dir. */
- ppt_alloc = (vpt_start - dsi.v_start) >> PAGE_SHIFT;
l2tab = page_array[ppt_alloc++] << PAGE_SHIFT;
ctxt->ctrlreg[3] = l2tab;
@@ -414,8 +426,6 @@
munmap(vl1tab, PAGE_SIZE);
munmap(vl2tab, PAGE_SIZE);
#else
- /* First allocate pdpt */
- ppt_alloc = (vpt_start - dsi.v_start) >> PAGE_SHIFT;
/* here l3tab means pdpt, only 4 entry is used */
l3tab = page_array[ppt_alloc++] << PAGE_SHIFT;
ctxt->ctrlreg[3] = l3tab;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] [PATCH][VT] make VMX guest 1:1 page table PGD page below 4G,
Li, Xin B <=
|
|
|
|
|