svn commit: r186712 - projects/release_6_3_xen/sys/i386/xen
Kip Macy
kmacy at FreeBSD.org
Sat Jan 3 05:32:38 UTC 2009
Author: kmacy
Date: Sat Jan 3 05:32:37 2009
New Revision: 186712
URL: http://svn.freebsd.org/changeset/base/186712
Log:
make 2 separate cases for memory layout
Modified:
projects/release_6_3_xen/sys/i386/xen/xen_machdep.c
Modified: projects/release_6_3_xen/sys/i386/xen/xen_machdep.c
==============================================================================
--- projects/release_6_3_xen/sys/i386/xen/xen_machdep.c Sat Jan 3 02:31:57 2009 (r186711)
+++ projects/release_6_3_xen/sys/i386/xen/xen_machdep.c Sat Jan 3 05:32:37 2009 (r186712)
@@ -831,6 +831,8 @@ initvalues(start_info_t *startinfo)
#endif
unsigned long i;
int ncpus = MAXCPU;
+ uint32_t kidx_start = ((KERNBASE&0x3fffffff) >> PDRSHIFT);
+ uint32_t hvidx_start = ((VM_MAX_KERNEL_ADDRESS&0x3fffffff)>>PDRSHIFT);
nkpt = min(
min(
@@ -855,30 +857,36 @@ initvalues(start_info_t *startinfo)
l2_pages = 0;
IdlePDPT = (pd_entry_t *)startinfo->pt_base;
IdlePDPTma = xpmap_ptom(VTOP(startinfo->pt_base));
- for (i = (KERNBASE >> 30);
- (i < 4) && (IdlePDPT[i] != 0); i++)
+ if (KERNBASE >= 0xC0000000) {
+ l2_pages = 1;
+
+ for (i = kidx_start; i < hvidx_start; i++)
+ if (IdlePTD[i] != 0)
+ l1_pages++;
+
+ } else {
+ /*
+ * XXX this will currently only work if l2 pages == 1
+ *
+ */
+ for (i = (KERNBASE >> 30);
+ (i < 3) && (IdlePDPT[i] != 0); i++)
l2_pages++;
+ for (i = 0; i < 512; i++)
+ if (IdlePTD[i] != 0)
+ l1_pages++;
+ }
+
/*
* Note that only one page directory has been allocated at this point.
* Thus, if KERNBASE
*/
-#if 0
- for (i = 0; i < l2_pages; i++)
- IdlePTDma[i] = xpmap_ptom(VTOP(IdlePTD + i*PAGE_SIZE));
-#endif
-
l2_pages = (l2_pages == 0) ? 1 : l2_pages;
#else
l3_pages = 0;
l2_pages = 1;
#endif
- for (i = (((KERNBASE>>18) & PAGE_MASK)>>PAGE_SHIFT);
- (i<l2_pages*NPDEPG) && (i<(VM_MAX_KERNEL_ADDRESS>>PDRSHIFT)); i++) {
-
- if (IdlePTD[i] == 0)
- break;
- l1_pages++;
- }
+
/* number of pages allocated after the pts + 1*/;
cur_space = xen_start_info->pt_base +
More information about the svn-src-projects
mailing list