History log of /seL4-l4v-master/seL4/config.cmake
Revision Date Author Comments
# a00c2c16 17-Sep-2020 Curtis Millar <curtis.millar@data61.csiro.au>

Make kernel log buffer derived from cmake config

This removes the explicit CMake configuration for the kernel log buffer
and replaces it with a #define that is enabled for the required
configurations.

Signed-off-by: Curtis Millar <curtis@curtism.me>


# c06a6c9a 16-Jun-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: add MAX_BUDGET_US

We need to bound the time the user provides to configure scheduling
contexts to avoid malicious or erraneous overflows of the scheduling
math. Make the max period/budget 1 hour.

1 hour is sufficiently small that it will fit in a 32-bit error message.

1 week is sufficiently small for 64-bit platforms.

Signed-off-by: Kent McLeod <Kent.Mcleod@data61.csiro.au>


# a221ee1c 05-Apr-2020 Saer Debel <saer.debel@data61.csiro.au>

Enabled IPC debug features under new config

Introduced a new config flag to enable
userError format strings to be written to the IPC buffer.
Another config bool has been introduced to toggle
printing the error out and this can also be set at runtime.

Signed-off-by: Saer Debel <saer.debel@data61.csiro.au>


# 79da0792 01-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Convert license tags to SPDX identifiers

This commit also converts our own copyright headers to directly use
SPDX, but leaves all other copyright header intact, only adding the
SPDX ident. As far as possible this commit also merges multiple
Data61 copyright statements/headers into one for consistency.


# b5c56244 07-Oct-2019 Simon Shields <simon.shields@data61.csiro.au>

Create device untypeds at boot for all arches

Currently on x86 device untypeds are generated by passing the entire
address space minus any parts that are reserved by the kernel or that
are "real" memory (e.g. kernel image, physical RAM).

On ARM and RISC-V, device untypeds were generated at compile-time from
a device tree. This patch moves ARM and RISC-V to use the same approach
as x86, and moves the code from x86 into a common location that's
shared between the three architectures.

Co-Authored-By: Anna Lyons <anna@gh.st>


# 28c1ff4b 05-Sep-2019 Simon Shields <simon.shields@data61.csiro.au>

kernel: set maximum user paddr in build system

expose the maximum physical address that can be given to userspace
for use in hardware_gen.py


# 75f2c54b 12-Aug-2019 Simon Shields <simon.shields@data61.csiro.au>

tools: rewrite hardware_gen.py

This is almost a complete rewrite from the old hardware_gen.py.

It separates the 'parse DT' stage from the 'generate output'
devices more strictly, and is hopefully easier to understand and
easier to extend.

We also no longer generate the 'devices' list (in YAML)
or the dev_p_regs array (in C), as the kernel will implicitly
expose all non-RAM untypeds as devices.


# 5e7f50e8 07-Oct-2019 G. Branden Robinson <Branden.Robinson@data61.csiro.au>

config.cmake: fix typo

Discovered at IEEE SecDev 2019 when someone asked about binary
verification and optimisation levels.


# 582e6e26 06-Aug-2019 Yanyan Shen <yanyan.shen@data61.csiro.au>

riscv: SMP option

Allow to enable the SMP option for RISCV.


# e93e45a1 14-Sep-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Mark config options as advanced

This removes them from appearing in the CMake configuration cache and
being confusing.


# af9a0460 14-Sep-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Add KernelHardwareDebugAPIUnsupported

There are platforms/archs that don't support the Kernel Hardware Debug
API and they can now advertise that by setting
KernelHardwareDebugAPIUnsupported.


# d6bef3c5 09-Sep-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

cmake: Only include cmake files for selected arch

This prevents accidental declaration of properties or configurations
that are for the incorrect architecture selected. This was previously
required as the variables KernelWordSize and KernelArch were defined in
each arch specific cmake.config file. Now that they are defined in
advance it is possible to exclude the other imports.


# 47684650 23-Aug-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

mcs: allow kernel WCET estimate to be scaled

This configuration option allows for building images destined for
simulators, which may not simulate as fast as hardware, to still be
used.


# 742cabf1 22-May-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: provide tickless api for arm timers

This does not implement the timers for any platforms, but
provides the generic arm arch, and aarch32/aarch64 infrastructure for
tickless timer drivers.


# 71244499 31-Oct-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: tickless scheduler implementation

This changes the budget/remaining fields in scheduling contexts
to contain timer ticks, not number of abstract sel4ticks.

seL4_SchedControl_Configure now takes microseconds, not ticks.

This commit is plat-independant - the platform and arch specific
timer code follows in later commits.


# 952134d1 27-Oct-2016 Anna Lyons <Anna.Lyons@data61.csiro.au>

mcs: Add a scheduling context object

This is the first part of the seL4 MCS. This commit:

* adds a scheduling context object. Threads without scheduling
context objects cannot be scheduled.
* replaces tcbTimeSlice with the scheduling context object
* adds seL4_SchedControl caps for each core
* adds seL4_SchedControl_Configure which allows users to configure
amount of ticks a scheduling context has, and set a core for the
scheduling context.
* adds seL4_SchedContext_Bind, Unbind and UnbindObject, which allows
a tcb to be bound to a scheduling context.


# caad010a 01-Aug-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Add KernelIsMCS option

This switches between master and mcs configurations.
This also adds a build system variable KernelPlatformSupportsMCS that
can be used to error on platforms that don't support MCS due to
unimplemented functionality.


# bc61a7f3 24-Jun-2019 Anna Lyons <anna@gh.st>

python2 --> python3

Update all scripts and build system to call python3, given python2's
upcoming doom. Use sys.maxsize instead of sys.maxint in one script
(maxint does not exist in python3).


# 121943c3 18-Jul-2019 Sylvain Gauthier <sylvain.gauthier@data61.csiro.au>

[SMP] Added PPI support for gic_v2

Correctly defined the macros to translate between virtual and hardware
IRQs such that PPIs can be properly handled on gic_v2. It is now
possible to create a per-core handler for PPIs on platforms using this
GIC.


# daa2f231 30-May-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

tools: store KernelDTBSize as internal cache var

This is so KernelDTBSize can be consumed by other tools.


# d5ded0c4 06-May-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Process platform files in -C config

Allow projects that use the kernel as a subproject to configure the
kernel in -C scripts.

CMake supports providing a script via -C upon first initialisation of a
build directory. This script is expected to populate the configuration
cache for the rest of the build to depend on. This is how standalone
kernel builds are currently configured. However in buildsystems that add
the kernel as a subproject, it was up to the application to modify
configuration properties before or after the kernel was imported. This
lead to circular dependencies where properties were changed by a module
later in the build, but this then invalidated properties that were set
based on the first property's original value. This lead to running CMake
multiple times in order for settings to reach a stable state.

We now assume that most shared system configuration occurs in initial -C
settings evaluation. seL4Config.cmake is a configuration module that the
kernel exports that allows a configuration script to set kernel platform
and architecture settings in a way that doesn't introduce circular
dependencies.

seL4Config can be imported into other configuration files. This should
make it easier for a full system configuration script to query and
configure kernel configuration values without introducing circular
dependencies on configuration properties.


# 15091664 20-Mar-2019 Curtis Millar <curtis.millar@data61.csiro.au>

Add syscall for setting the current TLS register.

Some platforms and configurations do not allow user code to change the
value of the register used for TLS. On these architectures a syscall can
be used to allow the kernel to update the register on their behalf.

This does not immediately update the value in the user context on many
configurations as the values are only stored in the user context on a
context switch.


# 4ede700f 06-May-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Invert plat config.cmake processing order

Instead of processing each platform CMake file during the arch's
config.cmake file, we process all of the platform CMake files first.
This is primarily motivated by wanting to move platform configuration
into a config file that is processed via a -C argument to the initial
build initialisation command.

Now a platform config is responsible for setting the kernel architecture
and it's own platform/arch specific config settings. Where previously a
platform was chosen in an arch specific way via either setting
KernelARMPlatform or KernelX86Sel4Arch or KernelRiscVPlatform, a
platform can now be set by KernelPlatform. In cases where a platform may
further parameterise its configuration it is free to choose its own
config options to query. Platforms that support multiple seL4
architectures should use KernelSel4Arch to query this. Platforms that
provide sub platforms such as exynos5 and subplatforms exynos5250,
exynos5410 and exynos5422 can be selected by specifying
KernelPlatform=exynos5, KernelARMPlatform=exynos5410 for example.


# 8b4ed994 23-Jun-2019 Siwei Zhuang <siwei.zhuang@data61.csiro.au>

RISCV: Add Hifive unleashed platform

This change adds support for Hifive unleashed board. It also removes the
outdated hifive suport from the spike platform.


# 375a98c8 19-Jun-2019 Siwei Zhuang <siwei.zhuang@data61.csiro.au>

CMake: Generate device headers from DTS for spike

The DTS compilation was arm platforms only. Moving it to the top level
config file, making it available to RISCV platforms. The generated files
are almost identical with minor differences. A new argument(--arch) is
added to the hardware_gen.py for the differences.


# 5fac9e81 29-Apr-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

config: make root cnode size 4k minimum

The previous minimum (4) was actually too small to fit more than 1
capability, which would not allow the kernel to boot. A 4K minimum means
on 32-bit, an 8 size is the minimum (256 slots) and on 64-bit, 7 (128
slots).

In addition to being a more practical minimum, this also allows for
simplification of the boot code for future commits.


# 452e82bc 28-Apr-2019 Kent McLeod <Kent.Mcleod@data61.csiro.au>

CMake: Add -O0 option for kernel compilation

-O0 is a valid optimisation level. Results in faster compilation, but
noticably slower kernel execution when running applications such as seL4
test.


# ffa9fda8 21-Mar-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

style: use consistent styling for all cmake files

Add .cmake-format.yaml which defines custom functions with kwargs to
style nicely


# 2ac5bd63 05-Dec-2018 Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>

cmake: make pde_C an optional top-level type.

RISCV has its own model of page tables that doesn't have a distinguished
'directory' level.


# 092170e0 10-Apr-2018 Adrian Danis <Adrian.Danis@data61.csiro.au>

riscv: Guard against setting max num nodes

SMP is not currently supported on riscv, this prevents a user accidentally trying to
use it.


# c9644f6b 05-Apr-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

RISC-V: Add CMake build files


# 29695d26 07-Jan-2018 Adrian Danis <Adrian.Danis@data61.csiro.au>

x64: SKIM window to mitigate Meltdown (CVE-2017-5754) on x86-64

Introduces a kernel option that, when enabled, reduces the kernel window in a user address
space to just be Static Kernel Image and Microstate (SKIM), instead of the full kernel
address space. This isolates the important kernel data from the user preventing a
Meltdown style attack being able to violate secrecy. The kernel text and read only data,
i.e. anything that is static from boot, is not secret and can be allowed in the SKIM window
and potentially read by the user. Additionally to switch to and from the actual kernel
address space a small amount of state needs to also be in the SKIM window.

This is only an implementation for x86-64, although the same design is applicable to ia32


# d833f9a0 22-Nov-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Hikey: disable DANGEROUS_CODE_INJECTION

DANGEROUS_CODE_INJECTION does not work on the Hikey due to the current
state of the vspace implementation.


# 9a89cbe4 14-Nov-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

cmake: TOPLEVELTYPES declared as target property

TOPLEVELTYPES is not intended to be configurable by the user, rather is a reflection
on the types defined by the source. This changes the TOPLEVELTYPES argument to be
a property, allowing it to be constructed as a generator expression when generating
BF files. By being a property, and not something like a global property, it removes
the need to ensure that additions to TOPLEVELTYPES are done prior to any bitfield
target definitions.


# 9134ae3e 14-Nov-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

cmake: Custom target for holding properties

Defines an empty custom target whose purpose is to hold properties and configuration
data that can be retrieved using generator expressions in the build phase.


# 06442878 19-Sep-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

proof: Do not override proof variables

Using the `INTERNAL` attribute implied `FORCE` overriding any value the user may have set
for these. This was not the intention, and they should merely set a `CACHE` value if one
does not already exist.


# 1138d6ab 19-Sep-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

proof: Do not check for KernelState_C.thy in CSPEC_DIR path


# 71cde34b 07-Sep-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

Add config option for CONFIG_RESET_CHUNK_BITS

The config variable is used in the kernel but no setting was provided
prio to this commit.


# 0b730720 16-Mar-2017 Adrian Danis <Adrian.Danis@data61.csiro.au>

Add a CMake based build system

This commit adds an alternate build system using CMake that operates indepenently of
the existing Kconfig+Kbuild+make based build system