>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:
```

Reply via email to