Date: Sat, 3 Jan 2009 05:32:38 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r186712 - projects/release_6_3_xen/sys/i386/xen Message-ID: <200901030532.n035WcXQ017377@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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 +
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901030532.n035WcXQ017377>