ARM64
FreeBSD/arm64 is the FreeBSD port to the 64-bit ARM architecture, also known as AArch64 or ARMv8. FreeBSD 11.0 includes out-of-the-box support for ARMv8, and over 20,000 packages are available in the 3rd party software collection. Cavium's ThunderX is the initial reference platform for the FreeBSD/arm64 port.
Contents
See also the state of ports/packages on arm64.
Targets
FreeBSD Release Engineering builds specific images for Pine64 and rpi3. The Cavium Thunder and SoftIron Overdrive series are supported via the normal build chain. Images for certain other boards can be built by crochet.
Source
The basic FreeBSD/arm64 support is available in FreeBSD-CURRENT and FREEBSD-11-STABLE. (For reference, also see the history of FreeBSD/arm64 commits).
Building
Build script
World
The standard buildworld sequence works:
export MAKEOBJDIRPREFIX=<path-to-suitable-objdir> make buildworld TARGET=arm64
Kernel
The build sequence for the kernel is a fairly standard one:
export MAKEOBJDIRPREFIX=<path-to-suitable-objdir> make buildkernel TARGET=arm64
This results in an image called 'kernel' created in:
$MAKEOBJDIRPREFIX/arm64.aarch64/<svn-checkout-path**>/sys/GENERIC
** See the 'Source' section above for the svn-checkout-path.
Running
ARM Foundation Model
The ARMv8 Foundation Model is available from ARM. You must read and accept a click-through license to obtain it. The Foundation model may be run in a Linux virtual machine, or by using the experimental 64-bit Linux emulation support.
AndrewTurner has a GitHub repo set up to help run on the Foundation Model.
Cavium ThunderX
Cavium's ThunderX is the initial reference target platform for FreeBSD/arm64.
FreeBSD 11.0 supports the ThunderX EVB (evaluation board) and CRB (customer reference board) in SMP mode (48 CPU cores). SATA drives, PCIe expansion cards, and the on-chip network interface are fully supported.
FreeBSD is available on the 2 socket, 96 core Type 2A ThunderX systems at Packet.net.
Demo of SMP kernel on ThunderX
Gem5
HiKey
The HiKey is a low cost (~$75 - $100 + shipping) ARMv8 board from Linaro.
Pine64
Pine64 is pretty well supported other than HDMI. jmcneill@ is poking at HDMI.
For very recent -CURRENT builds (2018) you may see hangs if you boot normally. Interrupt the automatic boot and enter boot -v. Then, set the following:
echo 'boot_verbose="1"' >> /boot/loader.conf
See PR 224330.
QEMU
QEMU now has aarch64 system mode emulation support. It is available by installing the qemu-devel package or emulators/qemu-devel port.
The Release Engineers build periodic snapshots, including for arm64 on QEMU. Instructions on where to find these are sent to the shapshots mailing list.
See arm64/QEMU for further details on booting FreeBSD/arm64 in QEMU, including links to AArch64 EFI firmware files that are not included with the QEMU port.
Raspberry Pi 3 (RPI3)
This section has moved to arm64/rpi3
SoftIron Overdrive 3000
FreeBSD mostly works, other than the internal dual 10G networking, however support for this is being worked on. In the interim PCIe NICs work.
Screenshot
Useful Links
Known Limitations
- Userland SDT DTrace probes (usdt) do not work
- The Cavium ThunderX vnic driver has several issues (PRs 204414, 204415, 206310, 223573, 223575) but it's generally functional
- ACPI is not enabled (PR 209072)
- libc does not provide sbrk and some ports have not been updated to cope (PR 213862)
- Modules with per-VNET static variables will panic upon load, when VIMAGE is enabled (PRs 222314, 223670)
- Much profiling and performance work is still needed
Bugs
Search for open PRs with Hardware = arm64.
arm64 port failures are tracked in PR201763