No description
Find a file
Indan Zupancic c8ae3010bc x86,SMP: Fix VMCheckBoundNotification IPI handling
When a notification is bound to an IRQ that arrives on a different
core than where the VCPU is running, x86 uses a special IPI to
notify the other core about this. (For performance reasons you
would try to avoid this setup. Nevertheless, it should work.)

When an IpiRemoteCall_VMCheckBoundNotification arrives during a
VM exit, the notification reply set by VMCheckBoundNotification()
gets overwritten by the handleVmexit() reply, leading to lost
notification events. This happens when VMCheckBoundNotification()
gets called by the IPI handling code within NODE_LOCK_SYS.

As there is no way to postpone the VM exit handling and the IPI
code doesn't know whether it races with a VM exit, doing nothing
if the current task is the target is the safest choice:

Either the IPI itself caused a VM exit, or there was a VM exit
happening already.

To handle the first case, explicitly call VMCheckBoundNotification()
in handleVmexit(). This must be done while holding the kernel lock,
as the other core can release the lock any moment after it received
our IPI reply.

In the latter case, pending notifications will be detected and
returned to user space by the next seL4_VMEnter() call.

Fix tested by Alessandro Legnani.

Resolves issue #1148.

Signed-off-by: Indan Zupancic <indan@nul.nu>
2026-05-21 11:50:29 +01:00
.github/workflows workflows: use ${{ variable }} not invalid $${{ 2026-05-20 11:54:06 +10:00
.reuse CHANGES.md: add missing copyright 2026-05-06 14:19:38 +02:00
configs Export timer frequency to user space 2026-03-24 15:03:39 +11:00
include x86/vcpu: expose VMX-preemption timer scale MSR 2026-05-09 10:54:59 +02:00
libsel4 Add support for stm32mp2 SoC family 2026-05-19 13:28:22 +01:00
LICENSES manual: apply foundation branding 2021-06-17 20:19:51 +10:00
manual manual: Reorg riscv32/64 hardware objects 2026-05-09 20:24:50 +02:00
src x86,SMP: Fix VMCheckBoundNotification IPI handling 2026-05-21 11:50:29 +01:00
tools Add support for stm32mp2 SoC family 2026-05-19 13:28:22 +01:00
.cmake-format.yaml style: fix cmake formatting spec 2024-03-11 19:26:48 +00:00
.gitignore parse_doxygen_xml: minor typos and python lints 2025-07-15 08:20:45 +10:00
CAVEATS.md CAVEATS: verification update; remove clang problem 2025-11-24 10:28:33 +11:00
CHANGES.md CHANGES: log stm32mp2 support 2026-05-19 13:28:22 +01:00
CMakeLists.txt trivial,cmake: Update cmake for style 2026-05-03 15:35:54 +01:00
CODE_OF_CONDUCT.md add link to code of conduct 2020-04-01 17:23:36 +08:00
config.cmake Runtime Domain Schedules 2026-03-24 15:03:39 +11:00
CONTRIBUTING.md Update links after seL4 website re-org 2025-04-29 17:17:49 +10:00
CONTRIBUTORS.md CONTRIBUTORS: add contributors since 12.1.0 2024-06-25 10:40:10 +10:00
FindseL4.cmake CMake style all changed files 2026-03-12 11:28:26 +11:00
gcc.cmake Detect 'aarch64-elf-' toolchain 2025-05-26 06:01:48 +02:00
gdb-macros Update GDB macros 2022-05-18 13:40:55 +10:00
LICENSE.md Update links after seL4 website re-org 2025-04-29 17:17:49 +10:00
llvm.cmake Bump minimum CMake version 2025-02-26 17:11:57 +11:00
README.md README: update links for new docsite structure 2025-07-23 10:18:04 +10:00
SECURITY.md meta: add vulnerability disclosure policy (#424) 2021-06-30 15:28:52 +10:00
VERSION Update VERSION file to 15.0.0-dev 2026-03-31 10:58:57 +11:00

The seL4 microkernel

CII Best Practices CI seL4Test C Parser Compile Proof Sync RefMan XML

This project contains the source code of seL4 microkernel.

For details about the seL4 microkernel, including details about its formal correctness proof, please see the sel4.systems website and associated FAQ.

DOIs for citing recent releases of this repository:

  • DOI

We welcome contributions to seL4. Please see the website for information on how to contribute.

This repository is usually not used in isolation, but as part of the build system in a larger project.

seL4 Basics

Community

See also the contact links on the seL4 website.

Reporting security vulnerabilities

If you believe you have found a security vulnerability in seL4 or related software, we ask you to follow our vulnerability disclosure policy.

Manual

A hosted PDF version of the manual for the most recent release can be found here.

A web version of the API documentation is available as well.

Repository Overview

  • include and src: C and ASM source code of seL4
  • tools: build tools
  • libsel4: C bindings for the seL4 ABI
  • manual: LaTeX sources of the seL4 reference manual

Build Instructions

See the seL4 website for build instructions.

Status

License

See the file LICENSE.md.