Subject: Re: IBM NetStation 1000 Port
To: Jochen Kunz <jkunz@unixag-kl.fh-kl.de>
From: John Gordon <john_94501@yahoo.com>
List: port-powerpc
Date: 04/14/2003 10:47:08
Hello,

> > There is a patch that can be applied to the stock 2.4.19 kernel
> [...]
> > I have that kernel built and booted, and it worked as far as getting
> > to the root file system. 
> What did Linux say about residual data? Did it find residual data?
> NetBSD-PREP panics early in the boot process when it can't find
> residual data. (At least 1.6 does this.) 

The Linux patch just generates a fake residual data structure, leading me to
perhaps believe that a non-PREP platform port would be perhaps more
appropriate.

> Is there a OpenfirmWare in that machine? 

No, it is NCD-proprietary boot firmware.

All of that said, I do have a kernel that boots and gets as far as trying to
run init, then it fails with a bizarre error (all attempts to exec init return
an ENAMETOOLONG error). Here's the output from the console:

Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

pmap_steal_memory: stole 235 (total 237) pages (14999 left)
NetBSD 1.6.1_RC2 (EMBEDDED) #73: Sun Apr 13 04:12:18 PDT 2003
    johng@rabbit:/usr/home/johng/netbsd/prep/obj/sys/arch/prep/compile/EMBEDDED
Model: IBM 8362-XXX
total memory = 65536 KB
avail memory = 56076 KB
using 844 buffers containing 3376 KB of memory
mainbus0 (root)
cpu0 at mainbus0: 603ev (Revision 2.6), ID 0 (primary)
cpu0: HID0 90c000<DOZE,DPM,ICE,DCE>
pci0 at mainbus0 bus 0: indirect configuration space access
pci0: i/o space, memory space enabled
pchb0 at pci0 dev 0 function 0
pchb0: vendor 0x1014 product 0x0037 (rev. 0x02)
pcib0 at pci0 dev 1 function 0
pcib0: PIRQ[0-3] not used
pcib0: vendor 0x1014 product 0x000a (rev. 0x03)
pcn0 at pci0 dev 2 function 0: AMD PCnet-PCI Ethernet
pcn0: Am79c971 PCnet-FAST rev 5, Ethernet address ff:b9:ff:f9:7c:7f
pcn0: interrupting at irq 15
ukphy0 at pcn0 phy 0: Generic IEEE 802.3u media interface
ukphy0: OUI 0x00a0be, model 0x0002, rev. 3
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
vendor 0x5333 product 0x8901 (VGA display, revision 0x14) at pci0 dev 4
functiodisa0 at pcib0
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com0: console
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
biomask 0 netmask 8000 ttymask 8000

md0: internal 2048 KB image area
howto 0 bootdev 0 boot device: <unknown>
root on md0a dumps on md0b
Mounting root file system...
Calling domountroothook()...
Calling vfs_mountroot()...
mountroot: trying ffs...
mountroot: calling 0x10bfac...
f_bsize   = 512
f_iosize  = 4096
f_blocks  = 3983
f_bfree   = 2056
f_bavail  = 2056
f_files   = 222
f_ffree   = 37
readclock: 0/0/0/0/0/0WARNING: preposterous clock chip time
setclock: 3/4/13/10/0/46
 -- CHECK AND RESET THE DATE!
root file system type: ffs
Calling mountroothook_destroy()...
Getting vnode for '/'
Fixing initproc's CWD info
Checking time...
Create the pageout daemon kernel thread...
Create the process reaper kernel thread...
Create the filesystem syncer kernel thread...
Create the aiodone daemon kernel thread...
Initialising exec structures...
Calling scheduler...
init: copying out flags `-s' 3
init: copying out path `/sbin/init' 11
path = 0x7fffeff2
ERROR: namei (0xd6550dd8) == 63
sys_execve: freehdr
exec /sbin/init: error 63
init: copying out flags `-s' 3
init: copying out path `/sbin/oinit' 12
path = 0x7fffeff1
ERROR: namei (0xd6550dd8) == 63
sys_execve: freehdr
exec /sbin/oinit: error 63
init: copying out flags `-s' 3
init: copying out path `/sbin/init.bak' 15
path = 0x7fffefee
ERROR: namei (0xd6550dd8) == 63
sys_execve: freehdr
exec /sbin/init.bak: error 63
init: not found
panic: no init
syncing disks... done
setclock: 3/4/13/10/0/46
dumpsys: TBD
rebooting...

There's a lot of additional debug in there as I was trying to trace the source
of various problems to get this far. he things I have fixed so far, in order,
are:

1) The lack of bootinfo/residual data (I have a fake data structure that is
used when an NS 1000 is detected)

2) There is no RTC on the system (it was designed to get its current time from
the network once booted). The NetBSD kernel cannot handle having no clock
device (it tries to dereference undefined pointers to get the current time in
the inittodr() function.

What I haven't yet fixed are:

a) The problem getting init to run from the ramdisk. If anybody has any ideas
as to what might cause it to return name too long errors for /sbin/init, please
pass them on... I'll try to debug it a little more today.

b) The fact that the reset_prep_generic() function seems to stop working once
the pmap_bootstrap() routine finishes. I'm guessing that this is because the
register that it is using to generate a soft reset is, for some reason, not in
the location it was expected to be in, but for now I'm ignoring this.

TTFN,
John...

=====
Rate Corporate America at http://exec-ratings.bluedonkey.org

__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more
http://tax.yahoo.com