Module Name: src Committed By: skrll Date: Fri Oct 19 09:56:32 UTC 2012
Modified Files: src/sys/arch/arm/arm32: arm32_kvminit.c Log Message: slop wasn't sloppy enough in the kernel_size calculation. Add in the L2 page tables required as well. Should fix the dockstar boot problem reported by Andy Ruhl on port-arm. http://mail-index.netbsd.org/port-arm/2012/09/20/msg001471.html To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/arm32/arm32_kvminit.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/arm32/arm32_kvminit.c diff -u src/sys/arch/arm/arm32/arm32_kvminit.c:1.10 src/sys/arch/arm/arm32/arm32_kvminit.c:1.11 --- src/sys/arch/arm/arm32/arm32_kvminit.c:1.10 Fri Oct 19 09:50:30 2012 +++ src/sys/arch/arm/arm32/arm32_kvminit.c Fri Oct 19 09:56:32 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: arm32_kvminit.c,v 1.10 2012/10/19 09:50:30 skrll Exp $ */ +/* $NetBSD: arm32_kvminit.c,v 1.11 2012/10/19 09:56:32 skrll Exp $ */ /* * Copyright (c) 2002, 2003, 2005 Genetec Corporation. All rights reserved. @@ -122,7 +122,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.10 2012/10/19 09:50:30 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: arm32_kvminit.c,v 1.11 2012/10/19 09:56:32 skrll Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -368,15 +368,17 @@ arm32_kernel_vm_init(vaddr_t kernel_vm_b /* * Calculate the number of L2 pages needed for mapping the - * kernel + data + stuff + * kernel + data + stuff. Assume 2 L2 pages for kernel, 1 for vectors, + * and 1 for IO */ size_t kernel_size = bmi->bmi_kernelend; kernel_size -= (bmi->bmi_kernelstart & -L2_S_SEGSIZE); kernel_size += L1_TABLE_SIZE; - kernel_size += round_page(MSGBUFSIZE); + kernel_size += L2_TABLE_SIZE * (2 + 1 + KERNEL_L2PT_VMDATA_NUM + 1); kernel_size += cpu_num * (ABT_STACK_SIZE + FIQ_STACK_SIZE + IRQ_STACK_SIZE + UND_STACK_SIZE + UPAGES) * PAGE_SIZE; + kernel_size += round_page(MSGBUFSIZE); kernel_size += 0x10000; /* slop */ kernel_size += (kernel_size + L2_S_SEGSIZE - 1) / L2_S_SEGSIZE; kernel_size = round_page(kernel_size);