From owner-svn-src-projects@FreeBSD.ORG Sat Jan 3 05:32:38 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D7841065675; Sat, 3 Jan 2009 05:32:38 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3DF1C8FC08; Sat, 3 Jan 2009 05:32:38 +0000 (UTC) (envelope-from kmacy@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n035WcDW017378; Sat, 3 Jan 2009 05:32:38 GMT (envelope-from kmacy@svn.freebsd.org) Received: (from kmacy@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n035WcXQ017377; Sat, 3 Jan 2009 05:32:38 GMT (envelope-from kmacy@svn.freebsd.org) Message-Id: <200901030532.n035WcXQ017377@svn.freebsd.org> From: Kip Macy Date: Sat, 3 Jan 2009 05:32:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r186712 - projects/release_6_3_xen/sys/i386/xen X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Jan 2009 05:32:38 -0000 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>PDRSHIFT)); i++) { - - if (IdlePTD[i] == 0) - break; - l1_pages++; - } + /* number of pages allocated after the pts + 1*/; cur_space = xen_start_info->pt_base +