The Cavium OCTEON is a multicore SoC platform marketed primarily towards makers of network infrastructure equipment which is supported by FreeBSD/mips. It comes in configurations of 1 to 32 cores at clock rates ranging from 300MHz to 1.5GHz. The greatest number of cores and the highest clock rates are based on a recent revision to the architecture called OCTEON II which is not as readily-available as the previous incarnation, Octeon Plus. Octeon Plus boards running between 500MHz and 750MHz are readily available on eBay and direct from manufacturers with between 2 and 16 cores in PCI-X and standalone form factors.
Cavium requires an NDA for access to documentation but also runs a cnUsers program through which anyone may get access to their periodic releases of an open source version of their SDK. This is like the usual Octeon SDK but does not include advanced APIs for cryptography and compression, providing only primitive or limited interfaces, though these can generally be used to effect more advanced functionality with little effort.
FreeBSD can be booted on Octeon from disk or network using an ELF kernel through U-Boot with the "bootoctlinux" command. Support for some on-chip facilities is limited to those for which the kernel has some use and support for peripheral buses is yet nascent, although PCI, PCI-X and PCIe support is fairly complete. (There may be DMA issues with some PCI and PCI-X devices.) There are not, for example, drivers that provide some interface to the on-chip DFA engine.
The Ethernet driver does not fully support some newer hardware, as Octeon II hardware has not been obtainable by those working actively on FreeBSD support for Octeon. Basic packet passing functionality up to 1G speeds does seem to work.
Specific commercially-available boards tested and working with -CURRENT:
- Lanner MR-320 (requires OCTEON_VENDOR_LANNER option in kernel configuration; mv88e61xxphy supports exposing switch ports as separate VLANs on octe0)
- Lanner MR-730 (requires OCTEON_VENDOR_LANNER option in kernel configuration)
- Lanner MR-955 (requires OCTEON_VENDOR_LANNER option in kernel configuration; only the two em(4) interfaces are supported)
- Portwell CAM-0100 (requires OCTEON_BOARD_CAPK_0100ND option in kernel configuration)
- Radisys AMC-7211 / ATCA-7220 (requires OCTEON_VENDOR_RADISYS option in kernel configuration; if "uart" device is disabled, will use Radisys proprietary PCI serial console accessible via the oct-serial command on the LMP)
- D-Link DSR-500, DSR-500N, DSR-1000 and DSR-1000N (may require additional patches from the zrouter project)
Ubiquiti EdgeRouter Lite (requires OCTEON_VENDOR_UBIQUITI option in kernel configuration)
- GE Intelligent Platforms WANIC 6354 (requires OCTEON_VENDOR_GEFES option in kernel configuration; LEDs and USB not working)
Cavium-provided development boards tested and working with -CURRENT:
- CN5860-EVB-NIC4 (other EBT5800 variants should work as well)
CN5650-EVB-NIC16 (only the management port (octm0) works; octe0 is a XAUI port connected (at higig or 10gbps) to a BCM56512 switch connected to two 8-port BCM54980s -- the switch is attached via PCIe, but Broadcom seems to hold the driver details fairly closely (the OpenFlow Indigo project, which supports the hardware, does so using a binary blob), except for what seem to be leaked files on disreputable Chinese websites.)
The Cavium-provided simulator is also likely to work with -CURRENT although it is not tested or developed on as frequently as physical hardware. See here for possibly out-of-date information on using the simulator. Note that the Cavium Octeon simulator is not available as part of the non-commercial open-source SDK from cnUsers, and only runs on Linux.