In libplatsupport, we know which platforms do not support an ltimer
implementation, so rather than duplicating them, we can re-use the
cmake config variable here.
However, this needs to be moved after util_libs_import_libraries()
for the config to appear, but before config_option for it to be
generated in the gen_config.h file.
I have tested this with:
- maaxboard (supports timer, tests enabled)
- zynqmp (supports timer, tests disabled)
- cheshire (no timer support, tests disabled)
Signed-off-by: julia <git.ts@trainwit.ch>
This was working because ASIDPoolBits == PageBits on all existing
platforms, but this might not always be the case.
Signed-off-by: julia <git.ts@trainwit.ch>
This *coincidentally* fails with ret == seL4_RevokeFirst(9) if the
number of pools to allocate before failing is less than the actual
amount, because we don't allocate a capability for the last pool.
In essence, that could be happening even if we had the correct number
of pools, but doesn't because of how the kernel (presumably) checks
that the cap is free after checking the ASID pools are free.
Signed-off-by: julia <git.ts@trainwit.ch>
start_helper would do unnecessary complicated thread startup code
which may contain FPU instructions with some compilers and configs.
Normally this would be harmless (though it would thwart the test's
intention), but if the task runs out of budget before it finishes
the FPU instruction, it will be put on the release queue and make
no forward progress (unclear why).
This is only a problem for tasks with budget equal to MIN_BUDGET,
any time lost because of syscalls or traps will cause the task to
hang.
Signed-off-by: Indan Zupancic <indan@nul.nu>
Reduce unnecessary sleeping or long SC periods, without
reducing the quality of the tests.
Optimise test_fault() and test_ipc_pair() by taking init code
out of the inner loop and re-using the created processes.
These changes more than halve the time needed to run all tests.
Signed-off-by: Indan Zupancic <indan@nul.nu>
If we're seeing failures on this test, they need to be investigated. The
resume invocation is definitely supposed to call the scheduler and leave
with the highest priority thread running.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
This test has not been enabled since d07b2383b in 2017 and likely has
been broken for quite some time.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
config_set is true for 1 and false for all other values, so it does
not make sense to use with CONFIG_MAX_NUM_NODES.
The two instances where this happened look like they are trying to
guard CONFIG_MAX_NUM_NODES > 1 by checking whether CONFIG_MAX_NUM_NODES
has any value at all, but doing so incorrectly. CONFIG_MAX_NUM_NODES
has a default value of 1 and should always be set to a number, so we
can just drop the guard. If this assumption about always having a
numbers value is wrong, the code will not compile, which is acceptable.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Remove the space in the workflow name to ensure there are no side
effects when using it as an identifier.
Signed-off-by: Axel Heider <axelheider@gmx.de>
This patch aims to test the scenario where we inject an IRQ
on a vCPU that does not have a TCB associated with it.
Currently this results in the kernel crashing inside
invokeVCPUInjectIRQ. This test aims to confirm that the
eventual fix to the kernel is correct.
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
SMC caps are a new cap type for performing SMC calls on aarch64. These
tests check that CNode operations behave as expected when manipulating
capabilities of this type.
Signed-off-by: Kent McLeod <kent@kry10.com>
Ported software breakpoint test to aarch64 and moved single
stepping test from x86-only to arch-independent.
Signed-off-by: Alwin Joshy <joshyalwin@gmail.com>
Decrease the chance that the monitor thread is preempted just when it
has released the preemption threads, but before it has yielded itself.
(If that happens, the preemption threads get two time slices.)
See also #42
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
libsel4utils/reserve_initial_task_regions iterates over existing_frames
and expects it to be null-terminated. Without this commit, the behaviour
will rely on whatever the stack had before allocating existing_frames[]
in the stack, and subsequent calls may fail, hang, or reserve incorrect
frames; depending on the stack values.
Sponsored by: DARPA.
Signed-off-by: Hesham Almatary <hesham.almatary@cl.cam.ac.uk>
The aarch64 vspace API is changed to only have a single pagetable object
and capability type for all intermediate page table levels. The root
vspace object is still a separate object and capability type.
Signed-off-by: Kent McLeod <kent@kry10.com>
The budgets in test SCHED0014 are the same, the periods are different
(in relation 1/2/8), and we're checking that the kernel achieves that
period relation in scheduling.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
The fault assembly code manipulates an integer sized argument and so
32-bit register names need to be used in order to avoid compiler
warnings.
Signed-off-by: Kent McLeod <kent@kry10.com>
The previous schedule lead to 15/16th idle time and had extremely short
(1 tick) domain slices which means a lot of the test time was spent
idle or domain switching instead of running code.
This setup give domain 0 a long-ish slice to make some progress, adds
some variety to the schedule and sets 2 as the shortest period.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Most of the tests run in domain 0 with all other domains idle. To not
increase the runtime too much, we test with fewer domains by default if
DOMAINS is set.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>