Subject: Problems creating an install kernel for the hpcarm platform
To: None <tech-install@netbsd.org>
From: Jason Mitchell <jmitchel@bigjar.com>
List: tech-install
Date: 04/01/2007 23:24:27
Hello,

	I'm trying to create an install kernel for the hpcarm platform and I'm
running in to some difficulties. The hpcarm platform is a bit challenging in
that the kernel (including embedded ram disk) can't be bigger than around
3.7Mbytes. If the kernel is too big it won't boot. On the hpcarm platform
the NetBSD kernel is launched from WinCE using a program called hpcboot. If
the kernel is too big hpcboot loads the kernel and then hangs -- there might
be some output on the serial port, I'm not sure. This problem has been
around in the hpcarm port since at least NetBSD 1.6.

	I've managed to create a kernel with a 3400block (1.7MByte) embedded RAM
disk. I did this by stripping out most of the options and all but one
network card. On the embedded ramdisk is a crunchgened binary. The kernel
boots up, gives the "Enter pathname of shell or press RETURN for /bin/sh:"
prompt, then tries to run .profile. .profile tries to mount the md0a slice
read/write and gives the following error message:

	proc: table is full - increase kern.maxproc or NPROC
	mount_ffs: vfork: Resource temporarily unavailable

	If I run sysctl -w kern.maxproc=512 then try the mount again I get a uvm
fault:

uvm_fault(0xc0380e54, e59ff000, 2, 0) -> e
Fatal kernel mode data abort: 'Translation Fault (S)'
trapframe: 0xc2bdac54
FSR=c0491005, FAR=e59ff11c, spsr=a0000013
r0 =c2bb30c8, r1 =e59ff114, r2 =c2bb30e0, r3 =e59ff114
r4 =c0382120, r5 =c0000000, r6 =c2ba9544, r7 =00000000
r8 =c0000000, r9 =c2bdad60, r10=00000003, r11=c2bdacc0
r12=00000000, ssp=c2bdaca0, slr=c015efc8, pc =c015decc

Stopped in pid 922.1 (gumby) at netbsd:pmap_alloc_11+0x1c:       strne   r3,
[r1, #0x008]

	The uvm fault has the same first three lines and the same last line every
time. Some but not all of the registers are the same too. If I recompile the
kernel with MAXUSERS=32, then I get this message:

UVM: pid 10 (sh), uid 0 killed: out of swap

	If I do a ps awux, there are 10 processes running. 7 are names with []'s
around them (kernel processes?) and the three are init, sh, and ps awux. By
the way, gumby is the name of my crunchgen binary. I tried recompiling a
kernel with more memory (the default kernel using 32MBytes, but the machine
I'm testing on has 64MBytes) and that produced no change.

	My current theory is that when I created the install kernel I commented out
some necessary option. My other choice is that this is a problem with
versions. The kernel is 3.0.2 (I couldn't get cross compiling tools to build
for 3.0) while the crunchgened binary comes from 3.0. Also the machine I'm
doing the cross compiling on is an i386 running NetBSD 2.0.2. I've tried the
kernel on multiple machines with no change in results. Also the standard 3.0
kernel boots fine on an hpcarm box and NetBSD 3.0 runs without complaint.

	I'm attaching my kernel config. Please let me know if there's some option I
need to enable or if there's some other fault in my set up. I'm setting this
to tech-install, because I don't have any reason to believe this problem is
specific to hpcarm. If there's another list I should send this to, please
let me know.

Thanks,

Jason M.


INSTALLv8
#       $NetBSD: JORNADA720,v 1.41.2.1 2005/07/18 21:14:54 riz Exp $
#
#       JORNADA -- Windows-CE based jornada 720
#

include "arch/hpcarm/conf/std.hpcarm"

#options        INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#ident          "GENERIC-$Revision: 1.41.2.1 $"

# estimated number of users
maxusers        8

#options      DRAM_PAGES=16384 # 64Mb of memory is standard on Jornada728s

# Standard system options

options         RTC_OFFSET=0    # hardware clock is this many mins. west of
GMT
#options        NTP             # NTP phase/frequency locked loop

# CPU options

options         CPU_SA1110      # Support the SA1110 core

# Architecture options

# FPA options

#options        ARMFPE          # ARM Ltd FPE

# File systems

file-system     FFS             # UFS
#file-system    LFS             # log-structured file system
file-system     MFS             # memory file system
file-system     NFS             # Network file system
#file-system    ADOSFS          # AmigaDOS-compatible file system
#file-system    EXT2FS          # second extended file system (linux)
#file-system    CD9660          # ISO 9660 + Rock Ridge file system
file-system     MSDOSFS         # MS-DOS file system
#file-system    FDESC           # /dev/fd
#file-system    FILECORE        # Acorn filecore file system
file-system     KERNFS          # /kern
#file-system    NULLFS          # loopback file system
#file-system    OVERLAY         # overlay filesystem
#file-system    PORTAL          # portal filesystem (still experimental)
file-system     PROCFS          # /proc
#file-system    UMAPFS          # NULLFS + uid and gid remapping
#file-system    UNION           # union file system

# File system options
#options        QUOTA           # UFS quotas
#options        FFS_EI          # FFS Endian Independant support
options         SOFTDEP         # FFS soft updates support.
#options        FFS_NO_SNAPSHOT # ffs snapshots
#options        NFSSERVER

# Networking options

#options        GATEWAY         # packet forwarding
options         INET            # IP + ICMP + TCP + UDP
#options        INET6           # IPV6
#options        IPSEC           # IP security
#options        IPSEC_ESP       # IP security (encryption part; define
w/IPSEC)
#options        IPSEC_NAT_T     # IPsec NAT traversal (NAT-T)
#options        IPSEC_DEBUG     # debug for IP security
#options        MROUTING        # IP multicast routing
#options        PIM             # Protocol Independent Multicast
#options        NS              # XNS
#options        NSIP            # XNS tunneling over IP
#options        ISO,TPIP        # OSI
#options        EON             # OSI tunneling over IP
#options        CCITT,LLC,HDLC  # X.25
#options        NETATALK        # AppleTalk networking
#options        PFIL_HOOKS      # pfil(9) packet filter hooks
#options        PPP_BSDCOMP     # BSD-Compress compression support for PPP
#options        PPP_DEFLATE     # Deflate compression support for PPP
#options        PPP_FILTER      # Active filter support for PPP (requires
bpf)
#options        TCP_DEBUG       # Record last TCP_NDEBUG packets with
SO_DEBUG

# Compatibility options

#options        COMPAT_43       # 4.3BSD compatibility.
options         COMPAT_20       # NetBSD 2.0 compatibility.
options         COMPAT_16       # NetBSD 1.6 compatibility.
#options        COMPAT_14       # NetBSD 1.4 compatibility.
#options        COMPAT_13       # NetBSD 1.3 compatibility.
#options        COMPAT_12       # NetBSD 1.2 compatibility.
#options        COMPAT_11       # NetBSD 1.1 compatibility.
#options        COMPAT_10       # NetBSD 1.0 compatibility.
#options        COMPAT_09       # NetBSD 0.9 compatibility.
#options        TCP_COMPAT_42   # 4.2BSD TCP/IP bug compat. Not recommended.
#options                COMPAT_BSDPTY   # /dev/[pt]ty?? ptys.

# Shared memory options

#options        SYSVMSG         # System V-like message queues
#options        SYSVSEM         # System V-like semaphores
#options        SYSVSHM         # System V-like memory sharing
#options        SHMMAXPGS=1024  # 1024 pages is the default

# Device options

options         MEMORY_DISK_HOOKS       # boottime setup of ramdisk
options         MEMORY_DISK_ROOT_SIZE=3400      # Size in blocks
options         MEMORY_DISK_IS_ROOT     # use memory disk as root

# Miscellaneous kernel options
#options        KTRACE          # system call tracing, a la ktrace(1)
#options        IRQSTATS        # manage IRQ statistics
#options        LKM             # loadable kernel modules
#options        KMEMSTATS       # kernel memory statistics
#options        SCSIVERBOSE     # Verbose SCSI errors
#options        USERCONF        # userconf(4) support
#options        PIPE_SOCKETPAIR # smaller, but slower pipe(2)
#options        SYSCTL_INCLUDE_DESCR    # Include sysctl descriptions in
kernel

#options        NFS_BOOT_DHCP

# Development and Debugging options

#options        BOOT_DUMP       # Enable memorydump at boot
#options        PORTMASTER      # Enable PortMaster only options
options         DIAGNOSTIC      # internal consistency checks
#options        PMAP_DEBUG      # Enable pmap_debug_level code
#options        IPKDB           # remote kernel debugging
options         DDB             # in-kernel debugger
#options        DDB_HISTORY_SIZE=100    # Enable history editing in DDB
#makeoptions    DEBUG="-g"      # compile full symbol table

config          netbsd  root on ? type ?
#options        COMCONSOLE=0,CONADDR=0x3f8,CONUNIT=0

# The main bus device
mainbus0 at root

# The boot CPU
cpu0 at mainbus?

saip0   at mainbus?

# Serial
options         CONSPEED=19200
sacom*  at saip? addr 0xd000d000 size 0x24      intr 17

#OS Timer
saost*  at saip? addr 0x90000000 size 0x20

# SA1111 companion chip
sacc0   at saip? addr 0x40000000 size 0x2000

# PCMCIA bus support
sacpcic*        at sacc?
pcmcia*         at sacpcic?

# PCMCIA serial interfaces
com*    at pcmcia? function ?           # Modems and serial cards

# PCMCIA IDE controllers and disks
wdc*    at pcmcia? function ?
atabus* at ata?
wd*     at atabus? drive ?

# PCMCIA network interfaces
#an*    at pcmcia? function ?           # Aironet PC4500/PC4800 (802.11)
#awi*   at pcmcia? function ?           # BayStack 650/660 (802.11FH/DS)
#cnw*   at pcmcia? function ?           # Xircom/Netwave AirSurfer
#ep*    at pcmcia? function ?           # 3Com 3c589 and 3c562 Ethernet
#mbe*   at pcmcia? function ?           # MB8696x based Ethernet
ne*     at pcmcia? function ?           # NE2000-compatible Ethernet
#ray*   at pcmcia? function ?           # Raytheon Raylink (802.11)
#sm*    at pcmcia? function ?           # Megahertz Ethernet
#wi*    at pcmcia? function ?           # Lucent WaveLan IEEE (802.11)
#xi*    at pcmcia? function ?           # Xircom CreditCard Ethernet

#mhzc*  at pcmcia? function ?           # Megahertz Ethernet/Modem combo
cards
#com*   at mhzc?
#sm*    at mhzc?

# MII/PHY support
#acphy* at mii? phy ?                   # DAltima AC101 and AMD Am79c874
PHYs
#amhphy*        at mii? phy ?                   # AMD 79c901 Ethernet PHYs
#bmtphy*        at mii? phy ?                   # Broadcom BCM5201 and
BCM5202 PHYs
#brgphy*        at mii? phy ?                   # Broadcom BCM5400-family
PHYs
#dmphy* at mii? phy ?                   # Davicom DM9101 PHYs
#exphy* at mii? phy ?                   # 3Com internal PHYs
#glxtphy* at mii? phy ?                 # Level One LXT-1000 PHYs
#gphyter* at mii? phy ?                 # NS83861 Gig-E PHY
#icsphy*        at mii? phy ?                   # Integrated Circuit Systems
ICS189x
#inphy* at mii? phy ?                   # Intel 82555 PHYs
#iophy* at mii? phy ?                   # Intel 82553 PHYs
#lxtphy*        at mii? phy ?                   # Level One LXT-970 PHYs
#makphy*        at mii? phy ?                   # Marvell Semiconductor
88E1000 PHYs
nsphy*  at mii? phy ?                   # NS83840 PHYs
nsphyter* at mii? phy ?                 # NS83843 PHYs
#pnaphy*        at mii? phy ?                   # generic HomePNA PHYs
#qsphy* at mii? phy ?                   # Quality Semiconductor QS6612 PHYs
#sqphy* at mii? phy ?                   # Seeq 80220/80221/80223 PHYs
#tlphy* at mii? phy ?                   # ThunderLAN PHYs
#tqphy* at mii? phy ?                   # TDK Semiconductor PHYs
ukphy*  at mii? phy ?                   # generic unknown PHYs
#urlphy* at mii? phy ?                  # Realtek RTL8150L internal PHYs

# Peripheral IO Controller
#pioc0  at mainbus? base 0x00210000

# Serial ports
#com*   at pioc? offset 0x03f8 irq 10
#com*   at pioc? offset 0x02f8 irq -1
#com*   at pioc? offset 0x0338 irq -1
#com*   at pioc? offset 0x0238 irq -1

# Parallel ports
#lpt*   at pioc? offset 0x0278 irq 0
#lpt*   at pioc? offset 0x0378 irq -1
#lpt*   at pioc? offset 0x03bc irq -1

options         WSEMUL_VT100
options         WSDISPLAY_DEFAULTSCREENS=2
# see arch/hpcarm/dev/j720kbdmap.c for implemented layouts
#options        J720KBD_LAYOUT=KB_FR
options         FONT_VT220L8x10
# The X server requires theses two options
options         WSDISPLAY_COMPAT_USL
options         WSDISPLAY_COMPAT_RAWKBD

# physical console
sed0            at saip?
hpcfb*          at sed?
wsdisplay*      at hpcfb?
j720ssp0        at saip?        addr 0x80070000 size 0x100
wskbd*          at j720ssp?     mux 1
wsmouse*        at j720ssp?     mux 0

pseudo-device   loop    1               # network loopback
#pseudo-device  bpfilter 8              # packet filter
#pseudo-device  sl      2               # CSLIP
#pseudo-device  ppp     2               # PPP
#pseudo-device  tun     2               # network tunneling over tty
#pseudo-device  gre             2       # generic L3 over IP tunnel
#pseudo-device  ipfilter 1              # ip filter
#pseudo-device  gif     4               # IPv[46] over IPv[46] tunnel
(RFC1933)
#pseudo-device  faith   1               # IPv[46] tcp relay translation i/f
#pseudo-device  stf     1               # 6to4 IPv6 over IPv4 encapsulation
#pseudo-device  strip   4               # STarmode Radio IP (Metricon
Ricochet)
#pseudo-device  vlan                    # IEEE 802.1q encapsulation
pseudo-device   pty                     # pseudo-terminals
#pseudo-device  tb      1               # tablet line discipline
pseudo-device   vnd     4               # disk-like interface to files
#pseudo-device  ccd     2               # concatenated disk devices
#pseudo-device  cgd     2               # cryptographic disk devices
#pseudo-device  raid    4               # RAIDframe disk driver
#options        RAID_AUTOCONFIG         # auto-configuration of RAID
components
#pseudo-device  fss     4               # file system snapshot device

pseudo-device   biconsdev 1             # build-in console device
pseudo-device   wsmux

pseudo-device   md      1               # Ramdisk driver
pseudo-device   rnd                     # /dev/random and in-kernel
generator
#pseudo-device  clockctl                # user control of clock subsystem