sel4bench icon indicating copy to clipboard operation
sel4bench copied to clipboard

sel4bench build is failing for Quartz64

Open lsf37 opened this issue 3 years ago • 6 comments
trafficstars

I thought I had seen this building successfully before, but it seems that was not the case.

Error message is:

In file included from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/private.h:9,
                   from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/sel4bench.h:10,
                   from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/sel4bench/arch/sel4bench.h:12,
                   from /github/workspace/projects/seL4_libs/libsel4bench/include/sel4bench/sel4bench.h:13,
                   from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/event_counters.h:8,
                   from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/event_counters.c:6:
  /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/events.h:74:10: fatal error: sel4bench/cpu/events.h: No such file or directory
     74 | #include <sel4bench/cpu/events.h>
        |          ^~~~~~~~~~~~~~~~~~~~~~~~
  compilation terminated.

Also here: https://github.com/seL4/sel4bench/actions/runs/3527176346/jobs/5915946235

lsf37 avatar Nov 22 '22 22:11 lsf37

As a meta observation: it looks like we need a better see all minimally necessary checks passing when we accept a platform port. Currently, we need the platform to exist in the platform list for a build check to appear on GitHub, but once that platform is in the list, CI will fail until all necessary patches are merged and will block other builds.

Something that could potentially help is a way of switching on a disabled platform for a specific pull request only.

lsf37 avatar Nov 22 '22 22:11 lsf37

For this specific case: the platform doesn't have a timer yet, so it doesn't really make sense to build sel4bench for it. There is probably a mechanism for that already somewhere that is just not used here.

lsf37 avatar Nov 22 '22 22:11 lsf37

It is still failing with another issue:

  [182/299] Building C object apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj
  FAILED: apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj
  /usr/bin/ccache /usr/bin/aarch64-linux-gnu-gcc --sysroot=/github/workspace/build  -I/github/workspace/projects/seL4_libs/libsel4bench/include -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/cpu/cortex-a55 -I/github/workspace/projects/seL4_libs/libsel4bench/sel4_arch_include/aarch64 -I/github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm -I/github/workspace/projects/seL4_libs/libsel4bench/src -Iapps/sel4bench/musllibc/build-temp/stage/include -I/github/workspace/kernel/libsel4/include -I/github/workspace/kernel/libsel4/arch_include/arm -I/github/workspace/kernel/libsel4/sel4_arch_include/aarch64 -I/github/workspace/kernel/libsel4/sel4_plat_include/quartz64 -I/github/workspace/kernel/libsel4/mode_include/64 -Ilibsel4/include -Ilibsel4/arch_include/arm -Ilibsel4/sel4_arch_include/aarch64 -I/github/workspace/projects/util_libs/libutils/include -I/github/workspace/projects/util_libs/libutils/arch_include/arm -Iapps/sel4bench/util_libs/libutils/gen_config -Ilibsel4/autoconf -Ikernel/gen_config -Ilibsel4/gen_config -march=armv8-a  -D__KERNEL_64__ -O3 -DNDEBUG -ffunction-sections -fdata-sections -nostdinc -fno-pic -fno-pie -fno-stack-protector -fno-asynchronous-unwind-tables -ftls-model=local-exec -mstrict-align -mno-outline-atomics -std=gnu11 -MD -MT apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj -MF apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj.d -o apps/sel4bench/seL4_libs/libsel4bench/CMakeFiles/sel4bench.dir/src/arch/arm/armv/armv8-a/event_counters.c.obj -c /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/event_counters.c
  In file included from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/private.h:9,
                   from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/sel4bench.h:10,
                   from /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/sel4bench/arch/sel4bench.h:12,
                   from /github/workspace/projects/seL4_libs/libsel4bench/include/sel4bench/sel4bench.h:13,
                   from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/../../event_counters.h:8,
                   from /github/workspace/projects/seL4_libs/libsel4bench/src/arch/arm/armv/armv8-a/event_counters.c:9:
  /github/workspace/projects/seL4_libs/libsel4bench/arch_include/arm/armv/armv8-a/sel4bench/armv/events.h:74:10: fatal error: sel4bench/cpu/events.h: No such file or directory
     74 | #include <sel4bench/cpu/events.h>
        |          ^~~~~~~~~~~~~~~~~~~~~~~~
  compilation terminated.

This could be a fix: https://github.com/seL4/seL4_libs/pull/71

axel-h avatar Dec 02 '22 13:12 axel-h

Seem this patch gets us a bit further in the build., see https://github.com/seL4/sel4bench/actions/runs/3602291771/jobs/6069082715 Now the linker fails because the (missing) timer needs to be configured

FAILED: apps/sel4bench/irquser/irquser
  : && /usr/bin/ccache /usr/bin/aarch64-linux-gnu-gcc --sysroot=/github/workspace/build  -march=armv8-a  -D__KERNEL_64__ -O3 -DNDEBUG -D__KERNEL_64__   -Wl,--gc-sections  -static -nostdlib -z max-page-size=0x1000    -Wl,-umuslcsys_init_muslc /github/workspace/build/lib/crt0.o /github/workspace/build/lib/crti.o /usr/lib/gcc-cross/aarch64-linux-gnu/10/crtbegin.o apps/sel4bench/irquser/CMakeFiles/irquser.dir/src/main.c.obj -Wl,--start-group         -lgcc -lgcc_eh  libsel4/libsel4.a  apps/sel4bench/seL4_libs/libsel4vka/libsel4vka.a  apps/sel4bench/seL4_libs/libsel4allocman/libsel4allocman.a  apps/sel4bench/seL4_libs/libsel4utils/libsel4utils.a  apps/sel4bench/seL4_libs/libsel4simple/libsel4simple.a  apps/sel4bench/seL4_libs/libsel4muslcsys/libsel4muslcsys.a  apps/sel4bench/seL4_libs/libsel4platsupport/libsel4platsupport.a  apps/sel4bench/util_libs/libplatsupport/libplatsupport.a  apps/sel4bench/seL4_libs/libsel4vspace/libsel4vspace.a  apps/sel4bench/libsel4benchsupport/libsel4benchsupport.a  apps/sel4bench/seL4_libs/libsel4debug/libsel4debug.a  apps/sel4bench/seL4_libs/libsel4allocman/libsel4allocman.a  apps/sel4bench/seL4_libs/libsel4muslcsys/libsel4muslcsys.a  -Wl,-u -Wl,__vsyscall_ptr  apps/sel4bench/seL4_libs/libsel4bench/libsel4bench.a  apps/sel4bench/sel4_projects_libs/libsel4rpc/libsel4rpc.a  apps/sel4bench/sel4_projects_libs/libsel4nanopb/libsel4nanopb.a  apps/sel4bench/sel4_projects_libs/libsel4nanopb/libnanopb.a  apps/sel4bench/seL4_libs/libsel4serialserver/libsel4serialserver.a  apps/sel4bench/seL4_libs/libsel4utils/libsel4utils.a  apps/sel4bench/util_libs/libelf/libelf.a  apps/sel4bench/util_libs/libcpio/libcpio.a  apps/sel4bench/seL4_libs/libsel4platsupport/libsel4platsupport.a  apps/sel4bench/util_libs/libplatsupport/libplatsupport.a  apps/sel4bench/util_libs/libfdt/libfdt.a  -Wl,--undefined=arm_gic_ptr,--undefined=tegra_ictlr_ptr,--undefined=arm_gicv3_ptr,--undefined=fsl_avic_ptr,--undefined=ti_omap3_ptr  apps/sel4bench/sel4runtime/libsel4runtime.a  apps/sel4bench/seL4_libs/libsel4simple-default/libsel4simple-default.a  apps/sel4bench/seL4_libs/libsel4simple/libsel4simple.a  apps/sel4bench/seL4_libs/libsel4debug/libsel4debug.a  apps/sel4bench/seL4_libs/libsel4vspace/libsel4vspace.a  apps/sel4bench/seL4_libs/libsel4vka/libsel4vka.a  libsel4/libsel4.a  apps/sel4bench/util_libs/libutils/libutils.a  apps/sel4bench/musllibc/build-temp/stage/lib/libc.a -Wl,--end-group /usr/lib/gcc-cross/aarch64-linux-gnu/10/crtend.o /github/workspace/build/lib/crtn.o -o apps/sel4bench/irquser/irquser && :
  /usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/bin/ld: apps/sel4bench/libsel4benchsupport/libsel4benchsupport.a(support.c.obj): in function `benchmark_init_timer':
  support.c:(.text.benchmark_init_timer+0x70): undefined reference to `ltimer_default_init'

axel-h avatar Dec 02 '22 14:12 axel-h

Now the linker fails because the (missing) timer needs to be configured

The generic timer ltimer driver can be used if the KernelArmExportPCNTUser AND KernelArmExportPTMRUser kernel features are enabled. These features are only for development, but could work for sel4bench.

kent-mcleod avatar Dec 02 '22 23:12 kent-mcleod

I'm temporarily switching off QUARTZ64 until this issues is resolved, so that we can get sel4bench results in the meantime.

lsf37 avatar Dec 13 '22 22:12 lsf37