Status of EVL ports

To get EVL running on a platform, we need the following software to be ported in the following sequence:

  1. the Dovetail interface. This task is composed of two incremental milestones: first getting the interrupt pipeline to work, then enabling the alternate scheduling. Porting Dovetail is where most of the work takes place, the other porting tasks are comparatively quite simple.

  2. the EVL core. It is mostly composed of architecture-independent code, only a few bits need to be ported (a FPU test helper for the most part).

  3. the EVL library. Likewise, this code has very little dependencies on the underlying CPU architecture and platform. A port boils down to resolving the address of the clock_gettime() helper in the vDSO.

The table below summarizes the current status of the existing ports. If you are interested in porting your own autonomous core to a particular kernel release Dovetail supports, you certainly need the IRQ pipeline column matching the target platform to be checked, and likely the Alternate scheduling column as well. EVL requires both features to be available.

Current target kernel release

Linux 5.4-rc2

ARM64 SoC

SoC (Board) IRQ pipeline1 Alternate scheduling EVL base2 EVL stress3 Test kernel
Qualcomm QCS404 5.1-rc3
Qualcomm DragonBoard 410c 5.0
Broadcom BCM2837 (Raspberry 3 Model B) 5.4-rc2
HiSilicon Kirin 620 (HiKey LeMaker) 5.2
Xilinx Zynq UltraScale+ (ZCU102) 5.2
QEMU virt 5.3

ARM SoC

SoC (Board) IRQ pipeline1 Alternate scheduling EVL base2 EVL stress3 Test kernel
NXP i.MX7D (SabreSD) 5.2
NXP i.MX6qp (SabreSD) 5.4-rc1
TI AM335x-GP (BeagleBone Black) 5.1-rc3
Altera Cyclone V SoC FPGA (DevKit) 5.4-rc2
STMicro Cannes2-STiH410 (B2260) 5.2-rc7
Broadcom BCM2636 (Raspberry PI 2 Model B) 5.2-rc6

X86_64

Chipset (Module) IRQ pipeline1 Alternate scheduling EVL base2 EVL stress3 Test kernel
QEMU KVM 5.4-rc2
Intel Atom x5-E3940 (TQMxE39M) 5.4-rc2
Intel C236 core i7 quad (DFI SD631) 5.4-rc2


1 Means that the pipeline torture tests pass (see CONFIG_IRQ_PIPELINE_TORTURE_TEST). This milestone guarantees that we can deliver high-priority interrupt events immediately to a guest core, regardless of the work ongoing for the main kernel.

2 When this box is checked, EVL’s basic functional test suite runs properly on the platform, which is a good starting point. So far so good.

3 When this box is checked, the EVL core passes a massive stress test involving the hectic and latmus applications running in parallel for 24 hrs, all glitchlessly. This denotes a reliable state, including flawless alternate scheduling of threads between the main kernel and EVL. On the contrary, a problem with sharing the FPU unit properly between the in-band and out-of-band execution contexts is most often the reason for keeping this box unchecked until the situation is fixed.