Embedded / Arch
http://tinyurl.com/yd5l4mak https://hackmd.io/CwdgnAxghgrAzAEwLQAYBMKBsTgEYFhJhgCmESUCAHGAEa0wBmtcIjQA#
FreeBSD RISC-V Updates
- GENERIC kernel added August 2017
- Updates for new Privileged Architecture (v1.10)
- VM changes required to access userspace from supervisor (kernel)
- Execute only pages not acceasable from kernel. Unclear if this matters (Brooks: execute-only isn't practical with normal compilers and modern languages)
- Testing with Compressed Extension (smaller instructions)
- Compression ratio 1.19 vs 1.25 for micromips
- Finally migrated to FDT
Open issues for arches
Arm
- Work in progress on GENERIC kernel
- Discussion is ongoing to add armv7 as a TARGET_ARCH (andrew@ thinks likely)
- LLD currently supports only armv7 for 32-bit arm
Arm64
- andrew@ working NUMA support for dual package ThunderX
Single package ThunderX and SoftIron work
- Raspberry-pi 3 works
- 64-bit pi2 not yet working due to firmware
- Most systems work with a GENERIC kernel
- ThunderX in the cluster to build packages
ThunderX2 on the way, but completely different hardware so may need considerable work
Ed started working on bringing up ODROID C2
- Would be useful to have a status chart listing what works on what platforms
Mips(64)
- external toolchain with clang and lld mostly working
- hardfloat target arches added by br@, probalby need more testing and package builds
- Tests largely work, but some racey issues
- br@ tried micromips builds. Compilation works, but some work required on exception handlers.
PPC
- No users present
Sparc64
- No modern processors supported
- No modern clang support. Will need to test external GCC or remove.
- Unclear if a decent emulator exists. What is qemu status for sun4u?
(MarkLinimon adds later: running qemu-sparc64 on amd64 merely hangs.)
Toolchains
- Switching to builtin clang or external GCC for all architectures
- Tier 1 likely to require in-tree premissively licensed toolchain
- Still lacking a KLLDB
- Need to pick a toolchain file for targets with out of tree toolchains
Tuning
- Need to do more if we're going to handle (e.g) MIPS 24k APs and netflix 100+Gbps per host systems
- Don't want a zillion knobs
- Perhaps big vs small
- Maybe in per arch std.FOO files?
- Consider default file of nooptions, nodevice for tiny systems
- Warner's minimal kernel project may also help
Packaging, release, distribution, usability
- For RPi we would benefit from device tree overlays.
- What is the status?
- Need loader support?
- It would be nice if we had compatible python interfaces to our SPI, I2C, GPIO interfaces
- Really does need to just work with existing examples
- Ed reports that basic stuff does work
Ed's coop student looking into adding FreeBSD to noobs (https://www.raspberrypi.org/downloads/noobs/)
- Current RPi boot process makes it hard to integrate FreeBSD
- Requires uboot changes to work well. In particular, need a way to tell uboot where it was loaded from.
Virtualization
- Work in progress on bhyve for arm and arm64, Andy is currently reviewing patches
- Power9 has extensions, but no easy way to access
- Most recent MIPS versions support, but no access to hardware currently
Emulation
- Tier 1 and probably 2 should have QEMU