Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sel4bench build is failing for Quartz64 #32

Open
lsf37 opened this issue Nov 22, 2022 · 6 comments
Open

sel4bench build is failing for Quartz64 #32

lsf37 opened this issue Nov 22, 2022 · 6 comments

Comments

@lsf37
Copy link
Member

lsf37 commented Nov 22, 2022

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
Copy link
Member Author

lsf37 commented Nov 22, 2022

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
Copy link
Member Author

lsf37 commented Nov 22, 2022

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.

@axel-h
Copy link
Member

axel-h commented Dec 2, 2022

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: seL4/seL4_libs#71

@axel-h axel-h mentioned this issue Dec 2, 2022
@axel-h
Copy link
Member

axel-h commented Dec 2, 2022

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'

@kent-mcleod
Copy link
Member

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.

lsf37 added a commit to seL4/ci-actions that referenced this issue Dec 13, 2022
This is temporary until seL4/sel4bench#32 is fixed.

Signed-off-by: Gerwin Klein <[email protected]>
@lsf37
Copy link
Member Author

lsf37 commented Dec 13, 2022

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

lsf37 added a commit to seL4/ci-actions that referenced this issue Dec 13, 2022
This is temporary until seL4/sel4bench#32 is fixed.

Signed-off-by: Gerwin Klein <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants