Pre-loaded mfsroot size and FreeBSD 4.9 with 4G RAM
Jacques Fourie
jf at trispen.com
Fri Feb 10 07:19:14 PST 2006
On Thu, 09 Feb 2006 11:21:39 +0200, Jacques Fourie <jf at trispen.com> wrote:
> On Wed, Feb 08, 2006 at 01:58:36PM -0500, Kris Kennaway wrote:
>> On Wed, Feb 08, 2006 at 06:41:41PM +0200, Jacques Fourie wrote:
>> > Hi,
>> >
>> > I am pre-loading an image (used as MFS root) from the boot loader on
>> FreeBSD
>> > 4.9 by using 'load -t mfs_root mfsroot' in loader.conf. The size of
>> this
>> > image is 64M. If I have 4G of RAM in the machine, the 64M size causes
>> the
>> > kernel to panic almost immediately. With only 2G of RAM the kernel
>> boots
>> > without a problem. I have tried to increase the KVA_PAGES value to
>> 512 but
>> > the kernel still panics. If I decrease the image size to 40M the
>> kernel
>> > boots successfully on a machine with 4G of RAM. Any ideas as to how I
>> can go
>> > about finding (or fixing) this problem?
>>
>> Start by showing the panic ;-)
>>
>> Kris
>
> Hi,
>
> Here is the kernel panic :). The kernel was compiled with
> 'makeoptions DEBUG=-g' and DDB was included in the kernel. Unfortunately
> the
> stack trace from DDB does not seem to show any symbols. I've created this
> panic by installing FreeBSD 4.11-RELEASE with a GENERIC kernel that has
> 'makeoptions DEBUG=-g' and DDB included.
>
> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
> The Regents of the University of California. All rights reserved.
>
>
> Fatal trap 12: page fault while in kernel mode
> fault virtual address = 0xbff1e000
> fault code = supervisor write, page not present
> instruction pointer = 0x8:0xc03afa66
> stack pointer = 0x10:0xc4589f88
> frame pointer = 0x10:0xc4589f90
> code segment = base 0x0, limit 0xfffff, type 0x1b
> = DPL 0, pres 1, def32 1, gran 1
> processor eflags = interrupt enabled, resume, IOPL = 0
> current process = Idle
> interrupt mask = net tty bio cam
> kernel: type 12 trap, code=0
> Stopped at 0xc03afa66: movl %eax,0xbfc00000(,%edx,4)
> db> t
> (null)(c4dac000,f3cd2000,f76f0000,3,c0497f14) at 0xc03afa66
> (null)(458e000,f7f78000,c45ac000,c4589ff8,c023051c) at 0xc0363027
> (null)(0,4586c00,458e000,0,c0132e2d) at 0xc035c313
> (null)(0,0,0,0,0) at 0xc023051c
> (null)() at 0xc0132e2d
> db>
>
> Here is the output from a 'gdb -k' session on the kernel in question :
>
> # cd /usr/src/sys/compile/TEST
> # gdb -k kernel.debug
> GNU gdb 4.18 (FreeBSD)
> Copyright 1998 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you
> are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for
> details.
> This GDB was configured as "i386-unknown-freebsd"...Deprecated bfd_read
> called at
> /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c
> line 2627 in elfstab_build_psymtabs
> Deprecated bfd_read called at
> /usr/src/gnu/usr.bin/binutils/gdb/../../../../contrib/gdb/gdb/dbxread.c
> line 933 in fill_symbuf
>
> (kgdb) list *(0xc03afa66)
> 0xc03afa66 is in pmap_map (../../i386/i386/pmap.c:799).
> 794 pmap_kenter(vm_offset_t va, vm_paddr_t pa)
> 795 {
> 796 pt_entry_t *pte;
> 797
> 798 pte = vtopte(va);
> 799 *pte = pa | PG_RW | PG_V | pgeflag;
> 800 invltlb_1pg(va);
> 801 }
> 802
> 803 /*
> (kgdb) list *(0xc0363027)
> 0xc0363027 is in vm_page_startup (../../vm/vm_page.c:296).
> 291 /*
> 292 * Validate these addresses.
> 293 */
> 294
> 295 new_end = trunc_page(end - page_range * sizeof(struct
> vm_page));
> 296 mapped = pmap_map(mapped, new_end, end,
> 297 VM_PROT_READ | VM_PROT_WRITE);
> 298
> 299 /*
> 300 * Clear all of the page structures
> (kgdb) list *(0xc035c313)
> 0xc035c313 is in vm_mem_init (../../vm/vm_init.c:108).
> 103 * Initializes resident memory structures. From here on,
> all physical
> 104 * memory is accounted for, and we use only virtual
> addresses.
> 105 */
> 106
> 107 vm_set_page_size();
> 108 virtual_avail = vm_page_startup(avail_start, avail_end,
> virtual_avail);
> 109 /*
> 110 * Initialize other VM packages
> 111 */
> 112 vm_object_init()
>
>
> regards,
> jacques
I have installed 6.0-RELEASE and the behaviour is still the same. If I try
to pre-load an md_image of 64M with 4G of RAM installed, the kernel panics
early in the boot cycle. Here is the panic on 6.0-RELEASE:
131072K of memory above 4GB ignored
Copyright (c) 1992-2005 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD 6.0-RELEASE #0: Thu Nov 3 09:36:13 UTC 2005
root at x64.samsco.home:/usr/obj/usr/src/sys/GENERIC
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0xbff1e000
fault code = supervisor write, page not present
instruction pointer = 0x20:0xc0802464
stack pointer = 0x28:0xc4c20d00
frame pointer = 0x28:0xc4c20d0c
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 0 ()
trap number = 12
panic: page fault
Uptime: 1s
I will add DDB to the kernel to try and figure out what is going on...
regards,
jacques
More information about the freebsd-hackers
mailing list