After a long break ( July, 2006!), I decided to look at my JavaStation Espresso again. The Espresso was a development of the JavaStation Krups that we already support, but wasn't produced in quantity. It adds internal IDE, USB, 1 ISA slot, and 2 PCI slots (1 physically shared with ISA) to the Krups design.
My Espresso has a Sun X1032A/501-5656 ethernet/SCSI card in, so I thought that it would be good to have that working, and also look at USB support. The first hurdle with supporting the ethernet/SCSI card is that the OFW in the Espresso doesn't set up PCI devices when it starts up. Only the built-in devices are set up, although we already have to work around the lack of interrupt information by hard-coding it. Also, as noted by Pete Zaitcev, it has a hardware bug with the IDE interrupt line.
The first step was to understand PCI set up, and the PCI Architecture Specification and PCI Bridge Architecture Specification were useful here. After a lot of trial and error, I added PCI fixup support for sparc PCI. It was also necessary to work out which interrupt lines the PCI devices were connected to. The only way that I could see to try this was to adjust the hard-coded values in pci_machdep.c, re-compile and boot the new kernel. In this way, I was able to find out some of the values. The X1032A card has both devices on the same interrupt line, so I also tested with a Sun X6540A/375-0005 PCI dual SCSI card, where the two controllers are on different interrupt lines. Unfortunately, enabling an interrupt line shared with the IDE controllers causes a continuous stream of interrupts on line 5, and it looks like this line is used for some of the PCI lines and maybe the USB too. This means that those devices are not usable without hardware modifications. The boot output with PCI fixup and with the X1032A installed is:
Type 'i' to interrupt stand-init sequence First stand-init: Saving Context Table Pointer Opening the physical memory package Initializing Dictionary pointers Opening the virtual memory package Initializing Breakpoint Trap Handler Mapping Counter/Timer Registers Initializing Trap Table Mapping PCIC Registers Calibrating ms Factor Installing Simple Ticker Installing FLASH/IGS Segment Driver Mapping FLASH PROM Audio chip INIT SKIPPED FOR SPEED Version Clock Node Probing Main Memory Network Creating idprom property Creating C Stack Keyboard overrides Executing NVRAMRC JavaStation OpenBoot 3.12.FW14, 96 MB memory installed, Serial #9778686. Ethernet address 08:00:20:95:35:fe, Host ID: 809535fe. >> NetBSD/sparc Secondary Boot, Revision 1.15 (Sun Mar 24 06:10:47 GMT 2013) Patching OFW for SUNW,JSIIep sound device node: ok Booting netbsd Trying BOOTP protocol... ip address: 192.168.13.113, hostname: espresso, netmask: 255.255.255.0, gateway: 192.168.13.1 root addr=192.168.13.100 path=/export/espresso/root 4372736+130872 [211424+208043]=0x4b23c4 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 The NetBSD Foundation, Inc. All rights reserved. Copyright (c) 1982, 1986, 1989, 1991, 1993 The Regents of the University of California. All rights reserved. NetBSD 6.99.18 (ESPRESSO) #29: Mon Apr 15 17:13:13 BST 2013 firstname.lastname@example.org:/usr/obj/sparc/usr/src/sys/arch/sparc/compile/ESPRESSO total memory = 97080 KB avail memory = 90104 KB bootpath: /pci@0,300c0000/network@0,1 mainbus0 (root): SUNW,JSIIep: hostid 809535fe cpu0 at mainbus0: MB86904 @ 100 MHz, on-chip FPU cpu0: 16K instruction (32 b/l), 8K data (16 b/l): cache enabled msiiep0 at mainbus0 addr 0x300c0000 timer0 at msiiep0: delay constant 48 mspcic0 at msiiep0: Sun Microsystems microSPARC IIep PCI: clock = 33.333 MHz pci0 at mspcic0: model SUNW,375-0059: interrupt wiring known ebus0 at pci0 dev 0 function 0: Sun Microsystems PCIO Ebus2, revision 0x01 com0 at ebus0 bar 14 offset 0x3002f8 line 0: ns16550a, working fifo com0: console com1 at ebus0 bar 14 offset 0x3003f8 line 0: ns16550a, working fifo rtc0 at ebus0 bar 14 offset 0x300070: time-of-day clock parallel at ebus0 bar 14 offset 0x3003bc line 4 not configured pckbc0 at ebus0 bar 14 offset 0x300060, bar 14 offset 0x300060 line 0: selftest ok flashprom at ebus0 bar 10 offset 0x0 not configured audiocs0 at ebus0 bar 14 offset 0x200000 line 3: CS4231A audio0 at audiocs0: full duplex, playback, capture gpio at ebus0 bar 14 offset 0x300078 not configured gpio at ebus0 bar 14 offset 0x300079 not configured hme0 at pci0 dev 0 function 1: Sun Happy Meal Ethernet, rev. 1 hme0: interrupting at line 1 (pil 6) hme0: Ethernet address 08:00:20:95:35:fe qsphy0 at hme0 phy 1: QS6612 10/100 media interface, rev. 1 qsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto igsfb0 at pci0 dev 1 function 0: Integraphics Systems CyberPro 2000 (rev. 0x01) igsfb0: 2MB, 1024x768, 8bpp igsfb0: using 8bpp for X wsdisplay0 at igsfb0 kbdmux 1 ppb0 at pci0 dev 2 function 0: Digital Equipment DC21152 PCI-PCI Bridge (rev. 0x02) pci1 at ppb0 bus 1 Sun Microsystems PCIO Ebus2 (miscellaneous bridge, revision 0x01) at pci1 dev 0 function 0 not configured hme1 at pci1 dev 0 function 1: Sun Happy Meal Ethernet, rev. 1 hme1: interrupting at line 7 (pil 7) hme1: Ethernet address 08:00:20:95:35:fe nsphy0 at hme1 phy 1: DP83840 10/100 media interface, rev. 1 nsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto isp0 at pci1 dev 4 function 0: QLogic 1020 Fast Wide SCSI HBA isp0: interrupting at line 6 (pil 5) isp0: invalid NVRAM header Acer Labs M1533 PCI-ISA Bridge (ISA bridge, revision 0x08) at pci0 dev 7 function 0 not configured aceride0 at pci0 dev 16 function 0: Acer Labs M5229 UDMA IDE Controller (rev. 0x20) aceride0: using line 5 (pil 0) for native-PCI interrupt atabus0 at aceride0 channel 0 atabus1 at aceride0 channel 1 alipm0 at pci0 dev 17 function 0alipm0: SMBus disabled Acer Labs M5237 USB 1.1 Host Controller (USB serial bus, interface 0x10, revision 0x03) at pci0 dev 20 function 0 not configured scsibus0 at isp0: 16 targets, 8 luns per target scsibus0: waiting 2 seconds for devices to settle... sd0 at scsibus0 target 2 lun 0:
disk fixed sd0: fabricating a geometry sd0: 17274 MB, 17274 cyl, 64 head, 32 sec, 512 bytes/sect x 35378533 sectors sd0: async, 8-bit transfers root on hme0 nfs_boot: trying DHCP/BOOTP nfs_boot: DHCP next-server: 192.168.13.100 nfs_boot: my_name=espresso nfs_boot: my_domain=coris.org.uk nfs_boot: my_addr=192.168.13.113 nfs_boot: my_mask=255.255.255.0 nfs_boot: gateway=192.168.13.1 root on 192.168.13.100:/export/espresso/root root file system type: nfs WARNING: clock lost 4854 days WARNING: using filesystem time WARNING: CHECK AND RESET THE DATE! /etc/rc.conf is not configured. Multiuser boot aborted. Enter pathname of shell or RETURN for /bin/sh: Terminal type is wsvt25. We recommend that you create a non-root account and use su(1) for root access. espresso#
and it's possible to check the disk and configure the ethernet:
espresso# disklabel sd0 # /dev/rsd0c: type: SCSI disk: MAA3182S SUN18G label: fictitious flags: bytes/sector: 512 sectors/track: 248 tracks/cylinder: 19 sectors/cylinder: 4712 cylinders: 7508 total sectors: 35378533 rpm: 7200 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # microseconds track-to-track seek: 0 # microseconds drivedata: 0 3 partitions: # size offset fstype [fsize bsize cpg/sgs] a: 35378533 0 4.2BSD 0 0 0 # (Cyl. 0 - 7508*) c: 35378533 0 unused 0 0 # (Cyl. 0 - 7508*) espresso# ifconfig hme1 inet 18.104.22.168 netmask 0xffffffe0 up espresso# ping -c 31 -s 4480 -i 0.2 22.214.171.124 PING 126.96.36.199 (188.8.131.52): 4480 data bytes 4480 bytes from 184.108.40.206: icmp_seq=1 ttl=255 time=7.180440 ms 4480 bytes from 220.127.116.11: icmp_seq=2 ttl=255 time=6.451840 ms ... 4480 bytes from 18.104.22.168: icmp_seq=30 ttl=255 time=6.781320 ms ----22.214.171.124 PING Statistics---- 31 packets transmitted, 30 packets received, 3.2% packet loss round-trip min/avg/max/stddev = 6.402320/6.552037/7.180440/0.196676 ms
After discovering as many of the PCI interrupt mappings as I could, the next problem came when using the devices. For some reason, the machine would lock up occasionally when using the PCI cards. This was more likely if the ethernet was stressed. I also observed crashes, more often with SCSI than with ethernet. It looks like the problem is related to repeated Delayed Transactions on the secondary bus interface. As far as I can tell, with the default PCI controller configuration, the transaction will always fail, and the PCI controller will repeat the transaction forever. A workaround is to configure the controller to only repeat the transaction a certain number of times (the real fix would be to work out why the transaction fails). However, the workaround results in the read returning all-ones. For example:
espresso# ping -c 310 -s 4480 -f 126.96.36.199 PING 188.8.131.52 (184.108.40.206): 4480 data bytes NMI: system interrupts: 0x40000000
pio: addr=3e007008, cmd=6 stat=5022 .NMI: system interrupts: 0x40000000 pio: addr=3e000100, cmd=6 stat=5022 hme1: XXXlink status changed: cfg=100, stat 0, sm 0 NMI: system interrupts: 0x40000000 pio: addr=3e000100, cmd=6 stat=5022 hme1: XXXlink status changed: cfg=100, stat 0, sm 0 . ----220.127.116.11 PING Statistics---- 310 packets transmitted, 310 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 6.343480/6.680469/30.915520/2.006845 ms 138.2 packets/sec sent, 138.3 packets/sec received espresso#
where the read after the interrupt has all bits set, and this is also probably the reason that it's not possible to use the disk:
espresso# fsck /dev/rsd0a fsck: Cannot open `/etc/fstab': No such file or directory fsck: Cannot open `/etc/fstab': No such file or directory ** /dev/rsd0a fsck: /dev/rsd0a: Illegal instruction espresso#
In summary, it's rather disappointing that I can't get this to work, but after two weeks, and having hit a brick wall, I've stopped working on it again. But, I did take some pictures of it before putting it away.
Recent book purchases:
As a follow on to Volume 1, Volume 2 brings a more recent set of pictures of the North Wales coast. More memories of travelling on the North Wales main line, and in the time that I remember it. A generally very nice set of pictures, with some interesting angles taken by railwaymen too.
The Adventures Of The Hebe is a set of dairies of 3 voyages around the midlands canals in 1928, 1929 and 1930. Very nicely written up, with photographs too. A reflection of a simpler time.
I bought The Very Best of Jeannie C. Riley after listening to Kate Campbell's Twang On A Wire covers album and after listening to the 1968 recording of Harper Valley P.T.A.. Not a bad album, but I prefer the MP3 of Harper Vally P.T.A., even though it's a bit raw.
As a fan of Emmylou Harris, I was somewhat disappointed by this album - it doesn't seem to sparkle like some of the others. The tracks are all OK, but nothing really stands out. Spanish Dancer is probably my favourite track, but even that's not much different from Patti Scialfa's version on Rumble Doll.
I much preferred Neil Young's Prairie Wind, which I'd bought on impulse. It seems more laid back than some of his earlier work, but I still like that.
-^- More notes -^-