NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/41215: cannot load miniroot as kmod, kernel heap full



The following reply was made to PR kern/41215; it has been noted by GNATS.

From: =?ISO-8859-1?Q?Gr=E9goire_Sutre?= <gregoire.sutre%gmail.com@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/41215: cannot load miniroot as kmod, kernel heap full
Date: Wed, 10 Mar 2010 10:37:11 +0100

 Hi,
 
 [ This is a copy of a message I sent to port-i386. ]
 
 With -current boot(8) on i386, loading a (large) compressed module, such
 as a kernel or an installation miniroot.kmod, leads to an error heap
 full.  In qemu:
 
  >> NetBSD/x86 BIOS Boot, Revision 5.4 (from NetBSD 5.99.24)
  >> Memory: 639/130048 k
  > load /miniroot.kmod
  > boot /netbsd-GENERIC.gz
 8982376+493364+539784 [476288+461807]=0xa73910
 WARNING: couldn't open ffs (/stand/i386/5.99.24/modules/ffs/ffs.kmod)
 Loading /miniroot.kmod heap full (0x48f9c+32768)
 exit
 exit
 [many more exit]
 
 This is likely related to PRs #41215 and #41524, and to [1].  The
 following patch seems to work, but it's a wild guess:
 
 
 diff -u -r1.42 Makefile.boot
 --- sys/arch/i386/stand/boot/Makefile.boot
 +++ sys/arch/i386/stand/boot/Makefile.boot
 @@ -81,7 +81,7 @@
   # The biosboot code is linked to 'virtual' address of zero and is
   # loaded at physical address 0x10000.
   # XXX The heap values should be determined from _end.
 -SAMISCCPPFLAGS+= -DHEAP_START=0x30000 -DHEAP_LIMIT=0x50000
 +SAMISCCPPFLAGS+= -DHEAP_START=0x28000 -DHEAP_LIMIT=0x50000
   SAMISCMAKEFLAGS+= SA_USE_CREAD=yes     # Read compressed kernels
   SAMISCMAKEFLAGS+= SA_INCLUDE_NET=no    # Netboot via TFTP, NFS
 
 
 According to the CVS logs, the value of HEAP_START was bumped from
 0x20000 to 0x30000 a year ago since the size of /boot was getting
 dangerously close to the limit (HEAP_START - 0x10000).  But the
 downside is that the heap size was reduced from 0x30000 to 0x20000, and
 the latter is apparently not enough (for compressed modules).  Using
 0x28000 for HEAP_START leaves enough space for /boot, and enough room
 for the heap in my tests.
 
 I don't know what are the right values here, and why the HEAP_LIMIT is
 set to 0x50000.  Some help would be welcome :-)
 
 Thanks,
 
 Grégoire
 
 p.s. In my tests, the problem does not occur if the modules are
       uncompressed.
 
 [1] http://mail-index.netbsd.org/port-xen/2009/10/29/msg005516.html
 


Home | Main Index | Thread Index | Old Index