Skip to content

Commit b72ebe2

Browse files
committed
Add release notes (CHANGES.md) for Microkit 2.3.0
As per title. Signed-off-by: Julia Vassiliki <julia.vassiliki@unsw.edu.au>
1 parent ee52c8b commit b72ebe2

1 file changed

Lines changed: 131 additions & 0 deletions

File tree

CHANGES.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,136 @@
11
# Revision History for Microkit
22

3+
## Release 2.3.0
4+
5+
This release contains quite a few new features:
6+
7+
* x86_64 IOMMU support (this entails a breaking change)
8+
* seL4_BootInfo support, for reading runtime parameters on x86_64
9+
* Various improvements to x86_64 virtual machines, such as being able to
10+
stop/start their execution.
11+
* Support for 'Cap Sharing' to give PDs access to specific TCBs or SCs,
12+
useful for userspace schedulers.
13+
* Support for the seL4 Domain Scheduler.
14+
15+
There are also a variety of bug fixes, especially for x86_64 systems, and
16+
support for two new boards.
17+
18+
### Breaking changes
19+
20+
* x86_64 systems are now built with the IOMMU turned on by default, as we have
21+
added new syntax to allow for the IOMMU to be configured (see below).
22+
However, previously the IOMMU was disabled in seL4, so systems which did DMA
23+
on x86_64 will now *stop working* without specifying the IOMMU setup.
24+
25+
* x86_64 IOAPIC IRQs had an inverted polarity; `polarity="low"` became high
26+
and `polarity="high"` became low.
27+
28+
* vCPUs now default to the same core as the VMM, instead of core 0. If you
29+
were relying on this behaviour, you should explicitly specify core 0.
30+
31+
* PCI 'bus:dev:func' syntax is no longer supported, use the correct 'bus:dev.func'
32+
syntax instead. This was an implementation bug which was more permissive
33+
than it was supposed to be.
34+
35+
* Virtual Machines on x86_64:
36+
37+
* No longer support budget/period/priority. This did not work previously,
38+
as they share a TCB/SC with the VMM.
39+
40+
* The VMM on x86_64 cannot have children, nor receive PPCs.
41+
This was previously allowed but had several complex restrictions (such as
42+
not receiving messages after a `vmenter`) so have been disallowed.
43+
44+
* If you were not using the `libmicrokit` linker script (e.g. rust-seL4 users),
45+
the `__sel4_ipc_buffer_obj` is no longer declared in the linker script, and
46+
is instead allocated by the tool at a fixed virtual address above the stack
47+
which is now reserved. If you were assuming a specific virtual address for the
48+
IPC buffer, this would be broken.
49+
50+
### Feature changes
51+
52+
* Update to 16.0.0 release of seL4.
53+
54+
* Support an 'fpu' attribute on protection domains, following [RFC-18](
55+
https://sel4.github.io/rfcs/implemented/0180-fpu-switching.html), which allows
56+
for FPU access to be disabled on a per-PD basis.
57+
58+
* The debug-only (unverified) HardwareDebugAPI has been enabled and is available
59+
on most x86_64 and AArch64 platforms.
60+
61+
* A new 'cap sharing' feature. The SDF now supports a `<cspace>` element and
62+
support for placing caps to TCBs, SchedContexts, and VSpaces of other PDs
63+
into the CSpace of the current PD. This can be useful for user space schedulers
64+
that are not the fault-handlers (i.e. use parent-child hierarchy).
65+
66+
* It is now possible to turn x86 vCPUs (VMs) on or off.
67+
Use the new `microkit_vcpu_x86_on` and `microkit_vcpu_x86_off` APIs
68+
69+
* AArch64 EL1 (non-hypervisor) platforms are now supported.
70+
71+
* There is a new (experimental) `--viper-output` argument to the tool, which
72+
is part of some new (experimental) verification work of Microkit PDs using
73+
the [Viper tools from ETH Zürich](http://viper.ethz.ch).
74+
75+
* Microkit PDs are now a 2-level CSpace. This should not have any impact on
76+
users.
77+
78+
* It is now possible to create memory regions that are prefilled with bootinfo
79+
from the capDL initialiser. This includes the VBE, MBMAP, ACPI RSDP, Framebuffer,
80+
and TSC frequency types exported by seL4.
81+
82+
* New function `microkit_pd_resume()` which resumes a stopped child PD. Previously,
83+
only stop and start (which does resume but requires a program counter) existed.
84+
85+
* New support for configuring the IOMMU on x86_64 systems with the
86+
`<io_address_space>` element. See the `x86_64_iommu_dma_test` example packaged
87+
in the SDK for more details, as well as the manual section on IOMMU.
88+
Only 4KiB pages are supporting for the IOMMU due to kernel limitations.
89+
90+
* Support for the seL4 domain schedule now that the [RFC-20 Runtime Schedules](
91+
https://sel4.github.io/rfcs/implemented/0200-domain-schedules.html) has been
92+
added to seL4. This is useful for systems which want isolated subsystems
93+
with limited information flow between them.
94+
95+
### Bug fixes
96+
97+
* TQMA8XQP1GB loader address has been fixed as it was collided with reserved
98+
regions in memory.
99+
* IOAPIC IRQ polarity was inverted.
100+
* The loader now only maps in the loader memory, UART, and kernel regions, as
101+
otherwise (instruction) speculative accesses to device memory can occur.
102+
Please see [PR 464 for more details](https://github.com/seL4/microkit/pull/464).
103+
* A `microkit_deferred_notify()` or `microkit_deferred_irq_ack()` would be
104+
lost if you sent a reply from a `protected()` call, or from a `fault()` handler.
105+
Now we perform `seL4_Send` on the Notification or IRQHandler capability
106+
before replying to the PPC or Fault.
107+
* A bug with [high-address regions allocated the wrong memory](
108+
https://github.com/seL4/rust-sel4/issues/319) in the capDL initialiser was
109+
fixed.
110+
* A bug with certain systems that caused the Microkit tool to panic with the
111+
below message has been fixed.
112+
113+
```
114+
thread 'main' (414114) panicked at tool/microkit/src/capdl/allocation.rs:225:17:
115+
assertion `left == right` failed
116+
```
117+
118+
### Board support
119+
120+
* 'stm32mp2' for the STM32MP2 evaluation board.
121+
* 'qemu_virt_aarch64_el1' for QEMU/KVM on Linux AArch64 hosts (which don't support
122+
nested virtualisation).
123+
124+
### Notes for developers
125+
126+
* There is a new `--override-kernel` option to the tool that allows one to
127+
use an SDK built of Microkit but with a different seL4 kernel ELF.
128+
* We now have basic CI that runs Microkit images on real hardware.
129+
* We now recommend the use of the [Google repo-manifest 'microkit-manifest'](
130+
https://github.com/seL4/microkit-manifest) which tracks the supported version
131+
of seL4 to be used for testing the Microkit. It also records the latest build
132+
of the main branch which passed CI.
133+
3134
## Release 2.2.0
4135

5136
This release contains various bug fixes, minor features, and new board support.

0 commit comments

Comments
 (0)