Port-sparc archive

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

Re: anyone have a theory why net boot of a SPARC20 hangs?



On 5/27/26 03:07, Julian Coleman wrote:
Hi,

[trimmed out some lines for brevity]

Here is a good one ... everything seems to work but the root filesystem
  is not found :

<#0> ok boot /iommu@f,e0000000/sbus@f,e0001000/qec@0,20000/qe@0,0
Boot device: /iommu@f,e0000000/sbus@f,e0001000/qec@0,20000/qe@0,0  File and
args:


I should say that the machine has seven or eight network ports and
one of them is the quad QE thing. I just pop in an RJ45 and then run
the prom "watch-net-all" until I see an active network port. So to
make life a bit more simple I will try one of the hme ports.

<#0> ok watch-net-all
/iommu@f,e0000000/sbus@f,e0001000/SUNW,hme@1,8c00000
Internal loopback test -- succeeded.
Transceiver check  -- Using Onboard Transceiver - Link Up.
passed
Using Onboard Transceiver - Link Up.
Looking for Ethernet Packets.
'.' is a Good Packet.  'X' is a Bad Packet.
Type any key to stop.


So that works.



[   1.0000000] bootpath:
/iommu@f,e0000000/sbus@f,e0001000/qec@0,20000/qe@0,0

From the PROM command to our bootpath parser, things look OK.

<snip>

This looks strange to me - the default is "qec0" and I would expect it to
be "qe0".


I am going to guess the qeX type ports are not really a popular thing and never really was.

Unrelated but some of the sparc code is funny.

The reference to Lewis Carroll's "Jabberwocky" here :

https://nxr.netbsd.org/xref/src/sys/arch/sparc/sparc/autoconf.c line 668


    666 #if defined(SUN4)
    667 	if (CPU_ISSUN4M) {
    668 		printf("twas brillig..\n");
    669 		return;
    670 	}
    671 #endif

Sort of makes me wonder who was doing that thinking.


[  27.2303640] root device (default qec0): 172.16.35.44:/export/netbsd_sparc
[  27.3325900] use one of: fd0[a-h] hme0 le0 qe0 qe1 qe2 qe3 be0 sd0[a-h]
cd0[a-h] ddb halt reboot
[  27.4309715] root device (default qec0):
[  27.4916515] dump device: none


I will try the hme0 port :

<#0> ok boot /iommu@f,e0000000/sbus@f,e0001000/SUNW,hme@1,8c00000 -s
Boot device: /iommu@f,e0000000/sbus@f,e0001000/SUNW,hme@1,8c00000 File and args: -s
Using Onboard Transceiver - Link Up.
14e00
Server IP address: 172.16.35.44
Client IP address: 172.16.35.16
>> NetBSD/sparc Secondary Boot, Revision 1.15 (Mon Dec 16 13:08:11 UTC 2024)
Booting netbsd
Using Onboard Transceiver - Link Up.
Trying BOOTP protocol... ip address: 172.16.35.16, netmask: 255.255.255.192, gateway: 172.16.35.1
root addr=172.16.35.44 path=/export/netbsd_sparc
4917644+132732 [295392+280423]=0x55de8c
OBP version 3, revision 2.25 (plugin rev 2)
[   1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
[ 1.0000000] 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, [ 1.0000000] 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
[   1.0000000]     2024
[   1.0000000]     The NetBSD Foundation, Inc.  All rights reserved.
[   1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[ 1.0000000] The Regents of the University of California. All rights reserved.

[   1.0000000] NetBSD 10.1 (GENERIC.MP) #0: Mon Dec 16 13:08:11 UTC 2024
[ 1.0000000] mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/sparc/compile/GENERIC.MP
[   1.0000000] total memory = 511 MB
[   1.0000000] avail memory = 495 MB
[ 1.0000000] bootpath: /iommu@f,e0000000/sbus@f,e0001000/SUNW,hme@1,8c00000
[   1.0000000] mainbus0 (root): SUNW,SPARCstation-20: hostid 7200dead
[   1.0000000] cpu0 at mainbus0: mid 8: Ross,RT626 @ 200 MHz, on-chip FPU
[ 1.0000000] cpu0: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
[   1.0000000] cpu1 at mainbus0: mid 10: Ross,RT626 @ 200 MHz, on-chip FPU
[ 1.0000000] cpu1: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
[   1.0000000] sx0 at mainbus0 ioaddr 0x80000000
[   1.0000000] sx0: architecture rev. 3 chip rev. 3
[   1.0000000] obio0 at mainbus0
[   1.0000000] clock0 at obio0 slot 0 offset 0x200000: mk48t08
[ 1.0000000] timer0 at obio0 slot 0 offset 0x300000: delay constant 65, frequency = 2000000 Hz
[   1.0000030] zs0 at obio0 slot 0 offset 0x100000 level 12 softpri 6
[   1.0000030] zstty0 at zs0 channel 0 (console i/o)
[   1.0000030] zstty1 at zs0 channel 1
[   1.0000030] zs1 at obio0 slot 0 offset 0x0 level 12 softpri 6
[   1.0000030] zstty4 at zs1 channel 0
[   1.0000030] kbd0 at zstty4
[   1.0000030] zstty5 at zs1 channel 1
[   1.0000030] ms0 at zstty5
[   1.0000030] wsmouse0 at ms0 mux 0
[ 1.0000030] fdc0 at obio0 slot 0 offset 0x700000 level 11 softpri 4: chip 82077
[   1.0000030] fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
[   1.0000030] auxreg0 at obio0 slot 0 offset 0x800000
[   1.0000030] power0 at obio0 slot 0 offset 0xa01000 level 2
[ 1.0000030] iommu0 at mainbus0 ioaddr 0xe0000000: version 0x3/0x1, page-size 4096, range 64MB
[   1.0000030] sbus0 at iommu0: clock = 25 MHz
[   1.0000030] dma0 at sbus0 slot 15 offset 0x400000: DMA rev 2
[ 1.0000030] esp0 at dma0 slot 15 offset 0x800000 level 4: ESP200, 40MHz, SCSI ID 7
[   1.0000030] scsibus0 at esp0: 8 targets, 8 luns per target
[   1.0000030] ledma0 at sbus0 slot 15 offset 0x400010: DMA rev 2
[ 1.0000030] le0 at ledma0 slot 15 offset 0xc00000 level 6: address 08:00:20:00:de:ad
[   1.0000030] le0: 8 receive buffers, 2 transmit buffers
[ 1.0000030] bpp0 at sbus0 slot 15 offset 0x4800000 level 2 (ipl 3): DMA rev 2
[   1.0000030] dbri0 at sbus0 slot 14 offset 0x10000 level 9: rev e
[ 1.0000030] qec0 at sbus0 slot 0 offset 0x20000 level 4 (ipl 7): 128K memory
[   1.0000030] qe0 at qec0 slot 0 offset 0x0 rev 1 address 08:00:20:00:de:ad
[   1.0000030] qe1 at qec0 slot 1 offset 0x0 rev 1 address 08:00:20:00:de:ad
[   1.0000030] qe2 at qec0 slot 2 offset 0x0 rev 1 address 08:00:20:00:de:ad
[   1.0000030] qe3 at qec0 slot 3 offset 0x0 rev 1 address 08:00:20:00:de:ad
[ 1.0000030] hme0 at sbus0 slot 1 offset 0x8c00000 level 4 (ipl 7): Sun Happy Meal Ethernet (SUNW,hme)
[   1.0000030] hme0: Ethernet address 08:00:20:00:de:ad
[   1.0000030] nsphy0 at hme0 phy 1: DP83840 10/100 media interface, rev. 0
[   1.0000030] nsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
[   1.0000030] qec1 at sbus0 slot 3 offset 0x20000: 128K memory
[ 1.0000030] be0 at qec1 slot 0 offset 0x0 level 4 (ipl 7): rev 1, address 08:00:20:00:de:ad
[   1.0000030] on-board transceiver at be0: 10baseT, 100baseTX, auto
[   1.0000030] eccmemctl0 at mainbus0 ioaddr 0x0: version 0x0/0x2
[   1.0000030] WARNING: system needs entropy for security; see entropy(7)
[   1.0000030] cpu0: booting secondary processors: cpu1
[   1.0000030] wskbd0 at kbd0 mux 1
[   1.4887710] scsibus0: waiting 2 seconds for devices to settle...
[   3.9888020] entropy: best effort
[
[ 4.8889195] sd0 at scsibus0 target 3 lun 0: <SEAGATE, ST318404LSUN18G, 4207> disk fixed [ 4.9115995] sd0: 17274 MB, 7508 cyl, 19 head, 248 sec, 512 bytes/sect x 35378533 sectors [ 4.9288770] sd0: sync (100.00ns offset 15), 8-bit (10.000MB/s) transfers, tagged queueing [ 5.8789195] cd0 at scsibus0 target 6 lun 0: <TOSHIBA, XM-4101TASUNSLCD, 3424> cdrom removable
[   5.9042585] cd0: async, 8-bit transfers
[   5.9121940] swwdog0: software watchdog initialized
[   5.9889070] dbri0: speakerbox detected
[   6.0089110] dbri0: cs4215 rev E found at offset 8
[   6.0208480] audio0 at dbri0: playback, capture, full duplex
[ 6.1005325] audio0: slinear_be:16 2ch 48000Hz, blk 7680 bytes (40ms) for playback [ 6.1791065] audio0: slinear_be:16 2ch 48000Hz, blk 7680 bytes (40ms) for recording
[   6.2791020] root on hme0
[   6.3093565] nfs_boot: trying DHCP/BOOTP
[r
  [   9.3390725] nfs_boot: my_domain=bw.genunix.com
[   9.3891170] nfs_boot: my_addr=172.16.35.16
[   9.4391160] nfs_boot: my_mask=255.255.255.192
[   9.4891160] nfs_boot: gateway=172.16.35.1
[p
  [  15.5293705] root file system type: nfs
[  15.5803840] kern.module.path=/stand/sparc/10.1/modules
Created tmpfs /dev (802816 byte, 1536 inodes)
Enter pathname of shell or RETURN for /bin/sh:
#

Yeah ... that "Just Works"(tm).


And there is hint in the "use one of" line, so typing "qe0" should work
here.  Faster would be to add "-a" or "-as" at the end of the PROM boot
line so that it asks (the bootloader will also ask for the kernel name,
so you'll need to type "netbsd" or just <return> for the default list.


Or give up on the qe nics entirely. Could be fun to try LACP bonded
stuff but really a bootable SPARC20 is a museum piece anyways.


So it gets to looking for the root device which should be NFS and the NFS
server is happy to offer that over NFSv3. Not sure what the hiccup
is here.

I assume that the NFS server is OK, and the problem is in the sparc code.
Looking at:

   https://nxr.netbsd.org/xref/src/sys/arch/sparc/sparc/autoconf.c#device_register

I'm not sure that anyone has tried booting from a QEC card before, so we're
probably missing something specific for qec/qe cards.  I'm guessing that
we'll need something in device_register() or instance_match() to handle
them.


Bingo.  The QEC type quad cards are pretty and likely very rare.

If you can compile your own kernel, adding DEBUG to get more output from
the autoconf routines would be useful.  Otherwise, let me know and I can
build some test kernels to try out.

A DEBUG type kernel would be a real joy. I am not entirely thrilled with
the notion of a SPARC20 doing compile of anything but it can churn for a
week and I would not care really.

Certainly hilarious that it works at all.

Now then ... I did all this just to get a net boot config in place such
that I may try the DEC Alpha over netboot. That is where things get
really weird and obscure. I have a whole history of stuff on the "alpha"
port maillist that goes backs months. Getting that machine to do much
of anything has been just hell. The SCSI drivers are slightly borked.

Thank you Sir for the excellent help!  :)


--
--
Dennis Clarke
RISC-V/SPARC/PPC/ARM/CISC
UNIX and Linux spoken


Home | Main Index | Thread Index | Old Index