- use a marker file to get a time stamp for when doxygen output was
last generated. Use that as a file target instead of a phony target
to avoid rebuilds when there is nothing to do.
- use static pattern rules so that `make` creates files instead of
giving up when the prerequisite of a pattern rule does not exist yet.
- remove file list duplication (needed because the static pattern
rules also need to mention these files)
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Remove options that are obsolete in doxygen >= 1.9. We only use default
values here, so everything should keep working as before in doxygen 1.8.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
- fix broken links in the document
- small tweaks to make latex complain less:
- increase headheight by 2pt
- give small possible stretch value to parskip for filling pages
- use \sloppy for TOC to avoid unnecessary overfull hboxes
- make table placement more explicit (it currently doesn't fit
where [h] wants to place it, so allow it to go to the top of
the next page)
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
The computation in mcsPreemptionPoint no longer depends on the irq, so
getActiveIRQ() can be called closer to the actual use site of the irq.
This makes things slightly easier for verification because we don't need
to reason about potential side effects of mcsPreemptionPoint before
the irq value is used.
Closes#472
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
Round down intial normal descriptions of memory regions to 4k alignment
which ensures that all physical memory should be able to be turned into
frame objects and mapped into user level for access.
Signed-off-by: Kent McLeod <kent@kry10.com>
This fastpath optimizes the performance of VM faults in
seL4. It is heavily based on the existing seL4_Call
fastpath and includes the addition of fastpathing replies
to faulted threads in the seL4_ReplyRecv fastpath.
Currently only supported only implemented for aarch64.
Signed-off-by: Alwin Joshy <joshyalwin@gmail.com>
For verification flexible w.r.t kernel placement in physical memory, we
need to relate physBase as a named constant to its abstract equivalent.
Unfortunately, apart from enums, the C programming language does not
have real constants. The C parser follows the C standard and requires
enums constants to be storable as int, meaning without major overhaul
enums are not sufficient for storing word_t-sized memory addresses.
Since the linker scripts can't deal with static inline functions
in the constants they need (KERNEL_ELF_BASE and KERNEL_ELF_PADDR_BASE),
we provide the following preprocessor definitions for the linker
specifically:
* PHYS_BASE_RAW (the numerical value returned by physBase())
* KERNEL_ELF_BASE_RAW
* KERNEL_ELF_PADDR_BASE_RAW
Signed-off-by: Rafal Kolanski <rafal.kolanski@proofcraft.systems>
The seL4_MinSchedContextBits change has a predictable failure mode that
is not easy to debug otherwise.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
The "excluding extra refills" was confusing. seL4_CoreSchedContextBytes
is the size of sched_context_t + minimum refills, excluding any extra
refills.
We'd write it that way, but sched_context_t is not in scope in this
file.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
For verified configurations on which we perform binary verification,
ensure that we disable certain whole-program optimisations that are
incompatible with binary verification.
Signed-off-by: Matthew Brecknell <matt@kry10.com>
For proof workflow runs on seL4 PRs, upload kernel build artifacts
generated by the aws-proofs action. These can be used to run binary
verification, although we currently still require binary verification to
be manually triggered.
Signed-off-by: Matthew Brecknell <matt@kry10.com>
The TX2 is currently the only platform that supports CONFIG_ARM_SMMU and
wants it on by default, however the CMake scripts wouldn't allow it to
be disabled. Now it should work normally:
- When TX2 is set the config is enabled unless it's preconfigured to
OFF.
- When the platform is changed to not TX2, the SMMU option is turned
off.
Signed-off-by: Kent McLeod <kent@kry10.com>
gen_config.json provides a language-independent means of accessing the
kernel configuration. Before, gen_config.h was generated directly in
CMake. Now, gen_config.yaml is generated directly in CMake, and
gen_config.h and gen_config.json are derived from gen_config.yaml.
Signed-off-by: Nick Spinale <nick@nickspinale.com>
On the softcore rocketchip instantiation, rootserver behavior was
inconsistent. Rounding up the device tree size fixes this problem
Signed-off-by: Chris Guikema <chris.guikema@dornerworks.com>
These bytes were removed in commit f8d12311ba, but are needed for the
softcore instantiation that runs on the ZCU102. Without the bytes,
the rootserver can run into errors.
Signed-off-by: Chris Guikema <chris.guikema@dornerworks.com>
A QEMU bug caused interrupts that were not immediately claimed to be
left unclaimed. On real hardware, immediately claiming the interrupt
never allows it to be handled. This results in hardware peripherals
not functioning properly.
Co-authored-by: Eric Spidle <eric.spidle@dornerworks.com>
Signed-off-by: Chris Guikema <chris.guikema@dornerworks.com>
On the ZCU102 Rocketchip instantiation, the PLIC is available required
to use hardware peripherals like a UART
Signed-off-by: Chris Guikema <chris.guikema@dornerworks.com>
Since the rocketchip can be instantiated on a variety of FPGA fabrics,
it makes sense be begin differentiating them. This commit adds a
RocketchipZCU102 sub-platform for the version of the rocketchip that
can run on a ZCU102.
Signed-off-by: Chris Guikema <chris.guikema@dornerworks.com>
Currently, building `libsel4` as a static library with `KernelIsMCS`
enabled fails with the following error:
```
static declaration of 'seL4_NBWait' follows non-static declaration
```
This [was mentioned][1] in the original PR that modified exported
functions to use `LIBSEL4_INLINE_FUNC`.
[1]: https://github.com/seL4/seL4/pull/101#issuecomment-442010551
Signed-off-by: Klim Tsoutsman <klim@tsoutsman.com>
The thread context structure layout is explicitly designed to have the
register context first, as this simplifies saving the user context on
entry in assembly code. On the exit path there is no need to hard-code
this assumption, stick to the semantics and leave details to the
compiler.
Signed-off-by: Axel Heider <axel.heider@hensoldt.net>
The signal fastpath aims to optimize the
seL4_Signal operation. In this commit, it is
implemented for MCS AARCH64 (SMP and non-SMP).
The fastpath does not include the case where
signaling results in a higher priority thread
being unblocked and made available for
scheduling (on any core). It does not
fastpath the case where the signaled thread
is donated a scheduling context and has its
FPU state saved in the FPU of a core.
Co-authored-by: Shane Kadish <shane.kadish@csiro.au>
Signed-off-by: Alwin Joshy <joshyalwin@gmail.com>
This removes a memzero call from the seL4_SchedContextObject and seL4_ReplyObject cases of createObject. The memory is now cleared via clearMemory within resetUntypedCap
Signed-off-by: Michael McInerney <michael.mcinerney@proofcraft.systems>
This adds support for the Pine64 Quartz64 and other devices based on
the Rockchip RK3566. The platform support is adapted from the
Rockpro64 code, except that the RK356x has A55 cores, and adjusting
for the fact that the ARM Generic Timer is the only on-chip timer
available.
Signed-off-by: Peter S. Housel <housel@acm.org>
- makes setting more generic an allow overriding parameters
- save QEMU parameters in DTS as comment
Signed-off-by: Axel Heider <axel.heider@hensoldt.net>
Like the sel4test hardware runs, a sel4bench run can be requested via
adding a label (`hw-bench`) to any PR.
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>