>Synopsis: SGI Indy netboot not working since OpenBSD 5.6 and still in
6.0-current (#686) (for GENERIC-IP22)
>Category: kernel sgi
>Environment (taken from OpenBSD 5.5):
System : OpenBSD 5.5
Details : OpenBSD 5.5 (GENERIC-IP22) #127: Tue Mar 4 16:19:56 MST 2014
[email protected]:/usr/src/sys/arch/sgi/compile/GENERIC-IP22
Architecture: OpenBSD.sgi
Machine : sgi
>Description:
I'm trying to netboot a SGI Indy (w/R4400) using `bootecoff` and the
GENERIC-IP22 kernel of the respective OpenBSD versions (5.9 and
6.0-current (builddate: 1471615628)). Everything works fine until the
kernel tries to determine the IP address of the network interface (sq0
is the only network interface in this machine!) used for netbooting via
RARP. It states that its RARP requests are not answered, but when
sniffing the network traffic between the Indy and the next RARP server
(same as the NFS server that serves the root FS of the Indy) I can see
that all RARP requests that orginate from the Indy are answered with the
designated IP address. But the Indy doesn't seem to recognize these
answers or just ignores them. I then built a root FS using OpenBSD 5.2
(the first version that had support for the Indy) and netbooted with
this root FS and the respective loader and kernel, which worked fine.
Some further root FS building and testing later I found out that the
last OpenBSD version where netbooting works ok for the Indy is OpenBSD
5.5. The RARP problems described above start with OpenBSD 5.6. I sadly
don't know if this is due to changes to the SGI specific part of the
kernel or due to changes in the nfs ([...]/sys/nfs/nfs_boot.c) or RARP
([...]/sys/netinet/if_ether.c) related parts. I have an Octane2 ready
for kernel compilation and would be glad to test out any proposed
patches with my Indy.
>How-To-Repeat:
Netboot a SGI Indy with OpenBSD >= 5.6.
>Fix:
Unknown.
These are the firmware messages, the boot messages for 6.0-current
(builddate: 1471615628) until the kernel panics, the trace and the
output of `ps` and `show registers`:
```
>> version
PROM Monitor SGI Version 5.0 Rev B6 IP24 Sep 28, 1994 (BE)
>> boot --s
Setting $netaddr to 192.168.178.58 (from server )
Obtaining /bootecoff from server
37920+192+2592 entry: 0x880020f0
OpenBSD/sgi-IP22 ARCBios boot version 1.6
arg 0: bootp()/bootecoff
arg 1: -s
arg 2: ConsoleIn=serial(0)
arg 3: ConsoleOut=serial(0)
arg 4: SystemPartition=bootp()
arg 5: OSLoader=bootecoff
arg 6: OSLoadPartition=bootp()
arg 7: OSLoadFilename=indy
arg 8: OSLoadOptions=-s
Boot: bootp()indy
Setting $netaddr to 192.168.178.58 (from server )
Obtaining indy from server
Setting $netaddr to 192.168.178.58 (from server )
Obtaining indy from server
3538216+964696Setting $netaddr to 192.168.178.58 (from server )
Obtaining indy from server
[78+240984+142551]=0x4a92c0
ARCS32 Firmware Version 1.10
Found SGI-IP22, setting up.
Initial setup done, switching console.
[ using 384320 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2016 OpenBSD. All rights reserved.
http://www.OpenBSD.org
OpenBSD 6.0-current (GENERIC-IP22) #686: Fri Aug 19 04:16:19 MDT 2016
[email protected]:/usr/src/sys/arch/sgi/compile/GENERIC-IP22
real mem = 201326592 (192MB)
rsvd mem = 802816 (1MB)
avail mem = 193511424 (184MB)
warning: no entropy supplied by boot loader
mainbus0 at root: Indy
cpu0 at mainbus0: MIPS R4400 CPU rev 3.0 150 MHz, R4010 FPC rev 0.0
cpu0: cache L1-I 16KB D 16KB direct, L2 1024KB direct
int0 at mainbus0 addr 0x1fbd9880
imc0 at mainbus0: revision 3
gio0 at imc0
newport0 at gio0 addr 0x1f000000: Indy 8-bit (board rev 3, xmap rev 5,
vc2 rev 0)
newport0: 1040x768 8-bit frame buffer
wsdisplay0 at newport0 mux 1
wsdisplay0: screen 0 added (std, vt100 emulation)
hpc0 at gio0 addr 0x1fb80000: SGI HPC3 (onboard)
zs0 at hpc0 offset 0x00059830 irq 29: 85230
zstty0 at zs0 channel 1: console
zstty1 at zs0 channel 0
pckbc0 at hpc0 offset 0x00059840 irq 28
sq0 at hpc0 offset 0x00054000 irq 3: Seeq 80c03, address 08:00:69:12:34:56
wdsc0 at hpc0 offset 0x00044000 irq 1: WD33C93B, 20.0 MHz, burst DMA
wdsc0: microcode revision 0x0d, fast SCSI
scsibus0 at wdsc0: 8 targets, initiator 0
haltwo at hpc0 offset 0x00058000 irq 12 not configured
pione at hpc0 offset 0x00059800 irq 5 not configured
panel0 at hpc0 offset 0x00059850 irq 9: power and volume buttons
dsclock0 at hpc0 offset 0x00060000
clock0 at mainbus0: int 5
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
boot device: sq0
nfs_boot: using interface sq0, with revarp & bootparams
panic: reverse arp not answered by rarpd(8) or dhcpd(8)
Stopped at Debugger+0x4: jr ra
Debugger+0x8: nop
TID PID UID PRFLAGS PFLAGS CPU COMMAND
* 0 0 0 0x10000 0x200 0 swapper
Debugger+0x4
(fd3ebc734bfad760,900000001fbd9880,900000001fbd9830,ffffffff88007d
28) ra 0xffffffff888b6030 sp 0xffffffff88007d60, sz 0
panic+0x100
(fd3ebc734bfad760,900000001fbd9880,ffffffff88b6b598,ffffffff88bf8c5
0) ra 0xffffffff889a5120 sp 0xffffffff88007d60, sz 112
nfs_boot_init+0x5c0
(fd3ebc734bfad760,900000001fbd9880,ffffffff88b6b598,fffffff
f88bf8c50) ra 0xffffffff889bbad8 sp 0xffffffff88007dd0, sz 240
nfs_mountroot+0x68
(fd3ebc734bfad760,900000001fbd9880,ffffffff88b6b598,ffffffff
88bf8c50) ra 0xffffffff88879fb0 sp 0xffffffff88007ec0, sz 208
main+0xc48
(fd3ebc734bfad760,900000001fbd9880,ffffffff88b6b598,ffffffff88bf8c50
) ra 0xffffffff88800098 sp 0xffffffff88007f90, sz 48
kernel_text+0x98
(fd3ebc734bfad760,900000001fbd9880,ffffffff88b6b598,ffffffff88
bf8c50) ra 0x0 sp 0xffffffff88007fc0, sz 0
User-level: pid 0
http://www.openbsd.org/ddb.html describes the minimum info required in bug
reports. Insufficient info makes it difficult to find and fix bugs.
ddb> ps
TID PPID PGRP UID S FLAGS WAIT COMMAND
33089 0 0 0 3 0x14200 bored crynlk
77057 0 0 0 3 0x14200 bored crypto
54291 0 0 0 3 0x14200 pftm pfpurge
49248 0 0 0 3 0x14200 bored softnet
23263 0 0 0 3 0x14200 bored systqmp
79270 0 0 0 3 0x14200 bored systq
44405 0 0 0 3 0x40014200 idle0
46118 0 0 0 3 0x14200 kmalloc kmthread
1 0 0 0 3 0 initexec swapper
* 0 -1 0 0 7 0x10200 swapper
ddb> show registers
at 0xffffffff88b50000 userconf_cmds+0x18
v0 0x1
v1 0x1
a0 0xfd3ebc734bfad760
a1 0x900000001fbd9880
a2 0x900000001fbd9830
a3 0xffffffff88007d28
a4 0xffffffff88007d28
a5 0xffffffff88b75670 panicbuf.7792
a6 0xc0000000038b83a4
a7 0xc0000000038b83b0
t0 0xffffffff88b6b1e0 vmspace0
t1 0xffffffff88bf9140 kernel_pmap_store
t2 0
t3 0xffffffff88004000
s0 0xffffffff88007d98
s1 0xffffffff88aeb308 tau+0x3a0
s2 0x100
s3 0xc0000000000e40e8
s4 0xffffffff88007e60
s5 0xffffffff88007e68
s6 0xffffffff88bb57f0 nfs_diskless
s7 0xffffffff9fc56394
t8 0xffffffff88b5d934 rs_buf+0x14
t9 0xffffffff88a85c08 int2_splx
k0 0xffffffff88007e68
k1 0xffffffff88bb57f0 nfs_diskless
gp 0xffffffff88b52fd0 _gp
sp 0xffffffff88007d60
s8 0xffffffff9fc4be88
ra 0xffffffff888b6030 panic+0x100
sr 0x1004cfa3
lo 0xae
hi 0
bad 0xc0000000000e8838
cs 0x24
pc 0xffffffff88a70e74 Debugger+0x4
Debugger+0x4: jr ra
Debugger+0x8: nop
```
This is how it looks for OpenBSD 5.5:
```
[...]
[ using 327864 bytes of bsd ELF symbol table ]
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2014 OpenBSD. All rights reserved.
http://www.OpenBSD.org
OpenBSD 5.5 (GENERIC-IP22) #127: Tue Mar 4 16:19:56 MST 2014
[email protected]:/usr/src/sys/arch/sgi/compile/GENERIC-IP22
real mem = 201326592 (192MB)
rsvd mem = 802816 (1MB)
avail mem = 193806336 (184MB)
warning: no entropy supplied by boot loader
mainbus0 at root: Indy
cpu0 at mainbus0: MIPS R4400 CPU rev 3.0 150 MHz, R4010 FPC rev 0.0
cpu0: cache L1-I 16KB D 16KB direct, L2 1024KB direct
int0 at mainbus0 addr 0x1fbd9880
imc0 at mainbus0: revision 3
gio0 at imc0
newport0 at gio0 addr 0x1f000000: Indy 8-bit (board rev 3, xmap rev 5,
vc2 rev 0)
newport0: 1040x768 8-bit frame buffer
wsdisplay0 at newport0 mux 1
wsdisplay0: screen 0 added (std, vt100 emulation)
hpc0 at gio0 addr 0x1fb80000: SGI HPC3 (onboard)
zs0 at hpc0 offset 0x00059830 irq 29: 85230
zstty0 at zs0 channel 1: console
zstty1 at zs0 channel 0
pckbc0 at hpc0 offset 0x00059840 irq 28
sq0 at hpc0 offset 0x00054000 irq 3: Seeq 80c03, address 08:00:69:12:34:56
wdsc0 at hpc0 offset 0x00044000 irq 1: WD33C93B, 20.0 MHz, burst DMA
wdsc0: microcode revision 0x0d, fast SCSI
scsibus0 at wdsc0: 8 targets, initiator 0
haltwo at hpc0 offset 0x00058000 irq 12 not configured
pione at hpc0 offset 0x00059800 irq 5 not configured
panel0 at hpc0 offset 0x00059850 irq 9: power and volume buttons
dsclock0 at hpc0 offset 0x00060000
clock0 at mainbus0: int 5
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
boot device: sq0
nfs_boot: using interface sq0, with revarp & bootparams
nfs_boot: client_addr=192.168.178.58
nfs_boot: server_addr=192.168.178.3 hostname=indy
root on 192.168.178.9:/srv/nfs/indy/root
swap on 192.168.178.9:/srv/nfs/indy/swap
Automatic boot in progress: starting file system checks.
setting tty flags
pf enabled
starting network
starting early daemons: syslogd pflogd.
starting RPC daemons:.
swapctl: adding 192.168.178.9:/srv/nfs/openbsd/5.5/sgi/indy/swap as swap
device at priority 0
savecore: no core dump (no dumpdev)
checking quotas: done.
clearing /tmp
starting pre-securelevel daemons:.
setting kernel security level: kern.securelevel: 0 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd sendmail sndiod.
starting local daemons: cron.
Sat Aug 20 07:44:45 MDT 2016
OpenBSD/sgi (indy.domain.tld) (console)
login:
```