Updates to seL4Bench from seL4 10.1.x to 11.0.x


  • Add new VCPU benchmarks. This new benchmark app benchmarks the following overheads:
    • The overhead of a HVC privilege escalation from EL1 to EL2.
    • The overhead of an ERET privilege de-escalation from EL2 to EL1.
    • The overhead of a NULL hypercall into the seL4 EL2 kernel.
    • The overhead of an seL4_Call syscall.
    • The overhead of an seL4_Reply syscall.
  • Add griddle support with easy-settings.cmake file.
  • Force FPU state to only be restored when used. This ensures that during benchmarks where the FPU state isn’t being used that the FPU state does not get restored. This ensures that context switches in benchmarks accurately show the case where FPU restore is not performed.
  • Allow for platform counters to be enabled in IPC benchmark.
  • Update page_mapping benchmark to remap pages using the changed kernel API.


  • sel4bench: make plat_setup a weak symbol and remove stub functions for each platform
  • sel4bench: Add newlines to printf calls. printf buffering the output makes debugging harder as output becomes ordered differently.
  • Update usages of libcpio to match new api.
  • Style files.
  • smp: use SEL4BENCH_RESET_CCNT. This is a generic function for achieving what the code was hardcoded to armv7 for.
  • sel4bench: start looking for untyped at seL4_MaxUntypedBits.
  • Use sel4runtime.
  • libsel4benchsupport: fix child process stack init by ensuring benchmark_spawn_process leaves the stack top intact.
  • sel4bench: remove autoconf.h and global Configuration library and link configuration libraries explicitly.
  • Rename configuration libraries to follow a consistent naming convention.
  • Use sel4rpc library for allocating untypeds.
  • Remove sel4platsupport_timer usages and replace with ltimer and new ps_io_irq_t interfaces.
  • Fix SMP thread checkpointing. This fixes breakage in SMP x86_64 benchmark.
  • Refactor buildsystem to keep up with underlying changes. Try to also make configuration scripts easier to follow.
  • Use device tree for binding drivers to devices on Arm.