OpenBSD/sparc
OpenBSD/sparc runs on most of the 32bit Sun SPARC workstations, including
the sun4, sun4c, sun4e and sun4m architecture families
(but not the 64bit UltraSPARC computers, which are supported by
OpenBSD/sparc64).
A mailing list dedicated to the OpenBSD/sparc and OpenBSD/sparc64 ports is
available at sparc@openbsd.org.
To join the OpenBSD/sparc mailing list, send a message body of "subscribe
sparc" to majordomo@openbsd.org.
Please be sure to check our mailing list policy before
subscribing.
Table of contents
History:
The original 4.4BSD port was done by Chris Torek as a contract to
LBL. The code was released by Chris in mid-1993, and Theo de Raadt
worked it into shape for the NetBSD tree. Theo and Markus Wild worked
on improving Chris' original SunOS compatibility code into a highly
complete and reliable emulation. Chuck Cranor ported the sun4c code to
the 8KB pagesize sun4 architecture, and Theo merged this code in a
way that would allow the same kernel and programs to run on either
sun4c or sun4 machines (unlike Sun's separate kernel environments).
This last change also required a rewrite of the device configuration
code. Just after the NetBSD/sparc 1.0 release, Peter Galbavy wrote an
ESP SCSI device driver as a replacement for Chris' sparc-specific SCSI
code.
At this point a conflict emerged between Theo and the other people he
started the NetBSD project with, and Theo was forced by the core group
to resign from NetBSD. After Theo left NetBSD, a few people in the
NetBSD group did some other things for the port: Paul Kranenburg
ported a floppy driver and started writing support for the 4/400.
Chuck spent many long hours working on the ie, xy, xd device drivers.
Theo continued working independently, and made a number of additions:
P4 support, flexible boot strategy, a few graphics drivers with the help
from John Stone, and masses of bug fixes.
Work on porting OpenBSD/sparc to the sun4m platform was started by Theo,
but tendinitis problems with his wrists and the problems with the NetBSD
core combined made him stop this work. The initial sun4m work was passed
to Aaron Brown of Harvard, who was paid out of Margo Seltzer's research
funds. This initial stuff consisted mostly of a few attempts at building
pmap structure that could support all 3 MMU types efficiently. Also,
David Miller of the UltraLinux project got a little bit involved.
Theo and Jason Downs merged the NetBSD sparc code back into OpenBSD, making
OpenBSD/sparc usable again. Jason Wright wrote a few new SBus Ethernet
drivers with information from the UltraLinux project and has merged a few bits
from NetBSD sources to improve the stability of this architecture.
Over the time, Art Grabowski fixed various stability or reliability issues,
and added non-executable stack and heap on sun4m machines.
The frame buffer and console code was completely overhauled for OpenBSD 3.2,
improving display speed with some frame buffers, and supporting more cards.
And work continues...
Current status:
Currently, all the hardware listed in the
supported hardware section below boots
multi-user, and supports enough (if not all) of the on-board devices to
be generally usable.
A growing set of third-party SBus cards are also supported.
The X Window System works on all supported frame buffers, including
multi-head configurations.
No accelerated server is provided at the moment, although this is being
worked on.
An important note about OpenBSD/sparc is that it is designed so that
a single kernel can run on ALL SUPPORTED SPARC machines. Whereas
SunOS and Solaris have always had separate `kernel architectures', i.e. sun4,
sun4c, sun4e and sun4m, the same `GENERIC' OpenBSD kernel will run on all the
supported models.
Most of the problems with OpenBSD/sparc are believed to stem from the wide
variety of SPARC processor and cache implementations along with their
undocumented bugs, rather than general kernel problems.
Feedback on which models do and do not work reliably is
appreciated, particularly with newer models or upgrades.
Supported hardware:
Supported machines
- sun4: the VME series
- 4/100: Original SPARC with VME. Many hardware bugs.
- 4/200: A fairly decent VME-only machine
- 4/300: a 25MHz VME machine with many devices built onto the main board.
In other respects, it is quite similar to the SS1+.
- sun4c:
- SS1: the original 20MHz sun4c.
(Hardware limitations prevent SBus DMA peripherals from working
in some of the slots).
- SS1+: 25MHz version of the above.
(Hardware limitations prevent SBus DMA peripherals from working
in some of the slots).
- IPC: SS1+ in a cube, with bwtwo graphics builtin
- SLC: SS1+ built into a B&W monitor
- SS2: 40MHz version of the SS1
- IPX: SS2 in a cube, with cgsix graphics builtin
- ELC: SS2-performance built into a B&W monitor
- sun4e:
- SPARCengine 1e: a 6U VME cross between a sun4 and a sun4c,
similar to a Sun 4/300 with an OpenPROM interface.
- sun4m:
- 600MP: The original Sun4m machine.
This is a mbus machine with SBus and VME buses.
- LC: 50MHz MicroSPARC-1 based machines (aka Classic)
- LX: LC with a few more devices
- SS4: Reduced cost version of the SS5, available at 70MHz and 110MHz
- SS5: MicroSPARC-2 based machines available in 60, 70, 85,
and 110 MHz versions
- SS5: TurboSPARC CPUs in accelerated SS5 machines, running at 170 MHz
- SS10: Pizzabox mbus-based machine
- SS20: Improved Pizzabox mbus-based machine
- Sun Voyager
The following SPARC clones are also supported (non exhaustive list):
- Aries Research Inc, Parrot II (SS2 clone)
- Axil 243 and 245 (and possibly other models) (SS5 clones)
- Axil 320 (SS20 clone)
- CPU5V: VME card by Force Computer (sun4m)
- DTKstation/Classic+
- Fujitsu S-4/Leia2 (MicroSPARC-2 laptop)
- Goldstar GWS-40 (SS2 clone)
- Opus 5000 (SS1 clone)
- Opus 5250 (SS1 clone)
- RDI BriteLite
- RDI PowerLite: sun4m models, available at 50MHz, 85MHz, and 110MHz
- Solair WS19L (SS10 clone)
- SPARCbook 3, 3GS, 3GX, 3TX and 3XP by Tadpole (MicroSPARC-2 laptops)
- Tatung micro COMPstation 5 (SS5 clone)
- Tatung micro COMPstation LX (LX clone)
- Tatung TWS,SuperCOMPstation-20S (SS20 clone)
- Transtec SS5/170
Supported devices
This list of devices basically declares that any ``stock'' sun4c or sun4m
``SPARCstation'' or ``SPARCserver'' machine will probably work; for sun4
and sun4e machines one must be more careful.
- Mbus CPU modules
- SM30: 30 or 36 MHz SuperSPARC with no secondary cache
- SM40: 40 MHz SuperSPARC with no secondary cache
- SM41: 40 MHz SuperSPARC with 1MB of secondary cache
- SM50: 50 MHz SuperSPARC with no secondary cache
- SM51: 50 MHz SuperSPARC with 1MB of secondary cache
- SM51-2: 50 MHz SuperSPARC with 2MB of secondary cache
- SM61: 60 MHz SuperSPARC with 1MB of secondary cache
- SM61-2: 60 MHz SuperSPARC with 2MB of secondary cache
- SM71: 75 MHz SuperSPARC with 1MB of secondary cache
- SM81: 85 MHz SuperSPARC with 1MB of secondary cache
- SM81-2: 85 MHz SuperSPARC with 2MB of secondary cache
- SM100: dual 40 MHz Cypress 7C605 with 64KB of primary cache
- Ross HyperSPARC RT620/RT625 at 90MHz, with 256KB of primary cache
- Ross HyperSPARC RT620/RT625 at 125MHz, with 256KB of primary cache
- Ross HyperSPARC RT620/RT625 at 150MHz, with 512KB of primary cache
- Ross HyperSPARC RT620/RT625 at 166MHz, with 512KB of primary cache
- Ross HyperSPARC RT620/RT625 at 180MHz, with 512KB of primary cache
- Sun keyboard and mouse
- Type 2, 3, 4, and 5 keyboards with several layouts
(zskbd)
- Floppy drives
- sun4c and sun4m floppy disk drive
- Serial ports
- ttya and ttyb on-board serial ports
(zs)
(can be used as console if needed)
- 4/300 ttyc and ttyd on-board serial ports
(zs)
- SBus magma serial port cards, including: 4Sp, 8Sp, 12Sp, 16Sp, LC2+1Sp,
2+1Sp, 4+1Sp, 8+2Sp, and 2+1HS Sp.
(magma)
- SBus Serial/Parallel Interfaces (SUNW,spif, 501-1931)
(spif)
- Audio support
- on-board audio support for systems with AMD79C30 8-bit audio chips
(this includes sun4c models, SPARCclassic, and 600MP)
(audioamd)
- SUNW,CS4231 16-bit audio chips found on SPARCstation 4/5
(audiocs)
- Frame buffers
- SBus and sun4c/sun4m on-board video:
- bwtwo - black and white
- cgthree - 8-bit color, unaccelerated
The cgthree driver also supports the cgRDI, an onboard
cgthree-like frame buffer found in some laptops.
- cgsix - 8-bit color, accelerated (GX, GX+, TGX, TGX+)
This should work with most faithful emulations/clones of the
SBus cgsix.
- cgtwelve - 24-bit color, accelerated (but the driver does not support hardware acceleration)
- cgfourteen - 8 or 24-bit color, accelerated (but the driver does not support hardware acceleration)
- Fujitsu AG-10e
(agten)
- 24-bit color, accelerated (currently only supported in unaccelerated 8-bit
mode)
- Parallax XVideo and PowerVideo
(tvtwo)
- 24-bit color, accelerated (but the driver does not support hardware
acceleration)
- RasterFlex family
(rfx)
- 8/24-bit color, accelerated (currently only supported in unaccelerated 8-bit
mode)
- Southland Media Systems MGX and MGXPlus (mgx)
- 24-bit color, accelerated (currently only supported in unaccelerated 8-bit
mode)
- tcx - 8 or 24-bit color, accelerated
- Vigra VS10, VS11 and VS12 SBus frame buffers - 8-bit color, unaccelerated, selectable VGA and Sun-compatible video modes
- Weitek Power9000 (pninek) - found in Tadpole SPARCbook 3 (8-bit color, accelerated)
- Weitek Power9100 (pnozz) - found in Tadpole SPARCbook 3GS, 3GX, 3TX and 3XP (8, 16 or 32-bit color, accelerated)
- ZX
(aka Leo) - 8 or 24-bit color, overlay planes,
double-buffered, 3-D acceleration *
- 4/200 on-board bwtwo
- P4 video (4/100 and 4/300):
- bwtwo - black and white
- cgthree - 8-bit color, unaccelerated
- cgfour - 8-bit color, 1-bit overlay, unaccelerated
- cgsix - 8-bit color, accelerated
- cgeight - 24-bit color, 1-bit overlay, unaccelerated
- VME video (sun4):
- cgtwo - 8-bit color, unaccelerated
- cgthree - 8-bit color, unaccelerated
- cgsix - 8-bit color, accelerated
- Ethernet adapters
- on-board AMD Lance Ethernet (le)
- SBus AMD Lance Ethernet cards (le)
- SBus cards containing both AMD Lance
(le)
and SCSI
(esp)
- on-board Intel 82586 Ethernet 4/100 and 4/200 (ie)
- VME Intel 82586 Ethernet cards (ie)
- SBus 10/100Mbit qec+be found on Sun FastEthernet cards (SUNW,501-2450)
(aka. Sun Fast Ethernet 1.x) (be)
- SBus Quad 10Mbit qec+qe found on Sun Quad Ethernet cards (SUNW,501-2062) (qe)
- SBus 10/100Mbit hme Ethernet cards (hme)
*
- SBus 10/100Mbit SunSwift SUNW,fas Ethernet+SCSI cards (hme)
*
- SBus Quad 10/100Mbit hme and qfe Ethernet cards
(aka. Sun Quad Fast Ethernet 2.x) (hme)
*
- SBus Gigabit Ethernet 1.0/1.1 (ti)
*
- SBus Gigabit Ethernet 2.0 (gem)
*
- SCSI controllers
- on-board SCSI controller (sun4c, sun4e, sun4m, and 4/300) (esp)
- SBus SCSI controllers (Also works with several 3rd party
compatible boards) (esp)
- SBus cards containing both AMD Lance and SCSI (esp)
- SBus SUNW,fas Ethernet+SCSI cards (esp)
*
- VME "SUN-3"/"si" SCSI controller (interrupt driven DMA) (si)
- 4/110 "SCSI Weird" on-board controller (polled DMA) (sw)
- QSP/ISP SCSI controllers (i.e. "PTI,ptisp", "ptisp", "SUNW,isp" and "QLGC,isp") (isp)
- SMD and other disk controllers
- Xylogics 7053 VME SMD disk controller (xd)
- Xylogics 450/451 VME SMD disk controller (xy)
- PC Cards (PCMCIA)
- PCMCIA Controllers:
- SBus PCMCIA bridge (stp)
- Tadpole PCMCIA controller (tslot)
- WaveLAN/IEEE, PRISM 2-3, and Spectrum24 IEEE 802.11b PCMCIA/Compact Flash adapters (wi)
- NE2000 based Ethernet Adapters (ne)
- 3Com EtherLink (ep) LAN PC Cards
- Miscellaneous
- SBus Expansion Subsystem (SUNW,xbox) (xbox)
- Force FGA5000 VME/SBus bridge (fga)
- Force system configuration registers (scf)
- Force flash memory (flash)
- Tadpole microcontroller (power/system control) (tctrl)
- Prestoserve NVRAM SBus cards (limited support) (presto)
* Not supported in sun4c and sun4e class machines
due to PROM limitations.
Unsupported machines
- sun4: 4/400 (lacks support for the I/O cache, and has ethernet problems)
- sun4d machines:
- SPARC Server 1000
- SPARC Center 2000
These machines use XD-Bus instead of M-Bus for their CPUs, which is not
supported yet.
- JavaStation-NC (lacks support for this machine's PCI bus)
- sun4u: UltraSPARC 64-bit machines. Most of these are supported in the
OpenBSD/sparc64 port.
- Solbourne machines: these machines are quite different, and some are
plagued by processor bugs. Some of them are covered by the
OpenBSD/solbourne port.
- Tadpole SPARCbook 1, LC and 2: these machines use quite unusual components,
and do not have a Sun-compatible PROM.
Unsupported Devices
First of all, there are MANY unsupported devices.
A comprehensive list can probably not be written.
- Serial Cards
- VME mti 16-port serial card
- VME alm2 16-port serial card
- VME mcp 4-port serial card (or is it 8-port)
- Disk and Tape Controllers
- VME "sc" SCSI controller
- VME IPI controller
- VME "xt" Tape controller
- Frame buffers
- VME cgfive, 8-bit color, 1-bit overlay, double-buffered,
unaccelerated without GP/GP2
- VME cgnine, 24-bit color, 1-bit overlay, double-buffered,
unaccelerated without GP/GP2
- VME GP/GP2 Graphics Processor (drives a cgfive or cgnine)
- SBus cgeight 24-bit color, unaccelerated
(note: SBus cgeight is quite different from VME/P4 cgeight)
- SBus GT, 24-bit color, 8-bit color, overlay planes, double-buffered,
3-D acceleration (aka Graphics Tower)
- On-board Audio and ISDN
This is present on some sun4m systems (LX, LC, SPARCstation 10/20).
- Multiple Processors/Modules in sun4m systems
OpenBSD will sometimes not boot on some machines with multiple processors.
If this is the case, the extra CPUs must be removed.
- SBus SUNW,bpp (parallel port)
A driver exists in the source tree, but it does not work. None of the
developers have printers or cables to work with, to make it work, but
we really would prefer to receive a fixed driver.
- SBus FDDI cards
- SBus cards other than those listed above...
Hardware documentation:
Previous to 2007, it was extremely difficult or impossible to get much of
the necessary hardware documentation for these machines. Members of our
team (in particular David Gwynne) were instrumental in pressuring and
convincing Sun to go back into their archives and dig up the data sheets
that they had written in-house, describing the operation of their chips to
their own engineers. These documents can now be found at
http://wikis.sun.com/display/FOSSdocs/Home.
Some documents are still missing at that site, so we ask that interested
developers contact Sun and request additional information.
Getting and installing OpenBSD/sparc:
The latest supported OpenBSD/sparc release is
OpenBSD 5.4.
Here are the
OpenBSD/sparc 5.4 installation instructions
.
Snapshots are made available from time to time, in
this location
as well as in a few
mirrors.
Here are the
OpenBSD/sparc snapshot installation instructions
as well.
There are several installation media provided, so that
OpenBSD/sparc can be installed or upgraded via CD and floppy boot images on
sun4c and sun4m, miniroot images for machines without floppies
(such as sun4 machines), as well as network and diskless installs.
- CD boot
Booting off the CD provides a small ffs filesystem with a GENERIC kernel with
drivers for all supported devices found on SPARC machines.
For the latest list of drivers available on this image, take a look at the
GENERIC
kernel configuration file.
The CD can be booted off the OpenPROM prompt with
boot cdrom 5.4/sparc/bsd.rd
- Floppy (floppy54.fs)
Booting off the floppy provides a small ffs filesystem with a kernel
containing drivers for the most popular devices found on SPARC machines.
For the latest list of drivers available on this image, take a look at the
RAMDISK
kernel configuration file.
The floppy can be booted off the OpenPROM prompt with
boot floppy
- Miniroot (miniroot54.fs)
The miniroot provides the same installation environment as the bootable CD,
and is intended for easy bootstrap if there is already an operating system
installed on the machine.
After dumping the miniroot to the primary swap partition with dd, the
miniroot can be booted off the OpenPROM prompt with a command such as
boot disk:b
(the disk designation may be different, depending on the chosen swap
partition).
- Netboot (boot.net, bsd.rd)
Using a diskless setup, it is also possible to boot the OpenBSD/sparc
boot loader, boot.net, from the network via tftp, and access
the bsd.rd standalone miniroot over NFS.
Refer to the
diskless(8)
manual page for details on how to setup a network boot environment.