This is an old revision of the document!
ARMv8 Session
Session Chair: David Chisnall.
Arm people:
Andrew, open source engagement. Vas, misc optimisation Robin, power management (leading session tomorrow)
Also attending:
Julien (Citrix), Xen things Andy T (FreeBSD), ARMv8 bringup
Xen on Arm
Julien Grail gave a demo of the FreeBSD/ARM/Xen port. Port has been underway for one year. Working for Linaro, decided to port a new OS because Xen on ARM only supported Linux.
Cortex A15 board used for a demo.
Xen on x86 emulates devices via QEMU. On ARM, different approach. Clean support for virtualisation in the ISA. HVM for page tables, interrupt controller. All devices (disk, net) use Xen PV drivers. No device emulation, operating systems must support the devices (already present in FreeBSD/x86). (Quick Xen/x86 update: Able to boot dom0)
Demo, boots FreeBSD on Xen on ARM. Everything works except SMP (for now!). Uses PSCI (firmware) for bringing up second CPUs, not yet supported by FreeBSD.
Demo 2: Boots FreeBSD in dom0 (surprised, but happy, that it works). Boots Linux guest (domU) with FreeBSD dom0 on Xen.
Lots of things missing from FreeBSD/ARM. Some device tree support. Device rebinding is not correctly working. Multiplatform kernel not yet working. The memory layout of the guests isn't fixed.
Most important thing: Need a multiplatform that can run anywhere in memory. Andy T says it sort-of works, as long as the kernel start is aligned on a 1MB boundary. There are some physical addresses embedded in the config file. Discussion to follow on the mailing lists.
Samsung did a fully PV port of Xen to ARM, but the goal for Citrix is to have a thin Xen on ARM.
Device tree files were written by different groups and have diverged. Linux and FreeBSD expect slightly different descriptions. These need unifying.
ARMv8 Demo
Uses UEFI bootloader, which loads the kernel in the ARMv8 simulator. Kernel boots to mountroot prompt. Currently missing device drivers for… everything. UART is working through early_printf (hacked up). Missing lots of other things, but basic support now exists. pmap is mostly done, but possibly needs some reworking for efficiency.
pmap code written by implementing all functions as panic(), then implementing them as they were hit. fork() should work. Usermode code will be broken because the model doesn't do anything with caches yet. There's a vector for the exception handlers, but no working signal delivery.
rwatson asks about the state of the toolchain. We need something that's not binutils. LLVM/Clang can compile, but we're currently using a GPLv3 binutils, which can't go into the tree. Especially linker and objcopy. Lldb is expected to work on ARMv8, but might not be feature complete.