From owner-svn-src-projects@FreeBSD.ORG Mon May 16 16:19:53 2011 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 D4BB3106564A; Mon, 16 May 2011 16:19:53 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A9E648FC18; Mon, 16 May 2011 16:19:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p4GGJrej089926; Mon, 16 May 2011 16:19:53 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p4GGJrgp089924; Mon, 16 May 2011 16:19:53 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201105161619.p4GGJrgp089924@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 16 May 2011 16:19:53 +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: r221994 - projects/pseries/powerpc/aim 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: Mon, 16 May 2011 16:19:53 -0000 Author: nwhitehorn Date: Mon May 16 16:19:53 2011 New Revision: 221994 URL: http://svn.freebsd.org/changeset/base/221994 Log: Keep track of useful information like where preloaded metadata and modules are. On some firmwares (SLOF) OF_claim() does not reduce the size of the available array, meaning that these data (a) can be overwritten and (b) are not mapped into the kernel's address space except by accident in the direct-mapped case. loader provides the kernel with the end of the metadata + modules, mapped immediately after the kernel, so just replace endkernel by loader's KERNEND variable, if available. The kernel now boots on emulated POWER7 hardware to probing the device tree (where it stops due to lack of drivers) without any hacks. Note: this patch also affects PS3, and should be merged to HEAD after some more testing. Modified: projects/pseries/powerpc/aim/machdep.c Modified: projects/pseries/powerpc/aim/machdep.c ============================================================================== --- projects/pseries/powerpc/aim/machdep.c Mon May 16 16:18:40 2011 (r221993) +++ projects/pseries/powerpc/aim/machdep.c Mon May 16 16:19:53 2011 (r221994) @@ -251,7 +251,6 @@ powerpc_init(vm_offset_t startkernel, vm vm_offset_t basekernel, void *mdp) { struct pcpu *pc; - vm_offset_t end; void *generictrap; size_t trap_offset; void *kmdp; @@ -263,7 +262,6 @@ powerpc_init(vm_offset_t startkernel, vm int ppc64; #endif - end = 0; kmdp = NULL; trap_offset = 0; cacheline_warn = 0; @@ -279,7 +277,8 @@ powerpc_init(vm_offset_t startkernel, vm if (kmdp != NULL) { boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *); - end = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); + endkernel = ulmax(endkernel, MD_FETCH(kmdp, + MODINFOMD_KERNEND, vm_offset_t)); #ifdef DDB ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t);