svn commit: r221994 - projects/pseries/powerpc/aim
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Mon May 16 16:19:53 UTC 2011
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);
More information about the svn-src-projects
mailing list