THE LINUX FOUNDATION PROJECTS
Category

Blog

Blog - The Final Phase of Xen Safety: Solving Coverage and Residual Gaps - Stefano Stabellini, AMD

The Final Phase of Xen Safety: Solving Coverage and Residual Gaps – Stefano Stabellini, AMD

By Blog, Critical Software Summit, Safety-Critical Software Summit

Open Source Summit North America 2026 and Embedded Linux Conference brought together the open source community in Minneapolis from May 18–20, 2026.

For the ELISA Project community, the event was an important opportunity to continue the conversation around safety-critical software, open source safety standards, regulatory compliance, requirements traceability, verification, software supply chains, and safety engineering.

The Safety-Critical Software Track highlighted practical work across several domains, including aerospace, embedded systems, medical devices, robotics, avionics, automotive, and industrial systems. Sessions explored how open source communities are addressing the technical, process, and compliance needs of safety-critical systems.

Over the next few weeks, we will highlight selected session recordings from the track and share key takeaways with the community.

This week, we highlight “The Final Phase of Xen Safety: Solving Coverage and Residual Gaps,” presented by Stefano Stabellini, AMD.

Moving Xen Toward Final Safety Certification

AMD, in collaboration with the Xen community, is working to make the Xen hypervisor safety-certifiable to ISO 26262 ASIL D and IEC 61508 SIL 3 on Arm and AMD x86 platforms.

Stefano explained that the first phase of the project, Safety Concept Approval, has been completed. During this phase, safety assessors reviewed the project plans and examples of the safety artifacts.

The team is now nearing completion of the second phase, which focuses on carrying out those plans and addressing the remaining gaps in the certification effort.

The work is being developed in collaboration with the upstream Xen community rather than through a private fork. Major changes have been upstreamed, the Xen branch being prepared for certification is publicly available, and the team is working to make requirements, examples, tools, and infrastructure public wherever possible.

Xen’s Role in Functional Safety

Xen’s role in a functional safety system is to enforce isolation and freedom from interference between virtual machines.

This means ensuring that one virtual machine cannot affect another through memory access, security issues, latency, performance, or other system resources.

The session reviewed how Xen’s architecture can support embedded and safety-critical systems. Traditional Xen deployments often rely on Dom0, a large and highly privileged domain used to start and manage other virtual machines.

In embedded systems, the required virtual machines are often known before the platform starts. Xen can therefore launch them directly at boot, reducing the need for a large and privileged Dom0 environment.

Stefano described a model that separates responsibilities between a small control domain and a hardware domain. The control domain can monitor and restart selected virtual machines, while the hardware domain can manage devices and drivers without receiving unnecessary privileges.

Xen can also support untargetable domains that cannot be controlled or monitored by other domains. These domains can be used for safety-related workloads that require stronger isolation.

The Challenge of Complete Code Coverage

A central focus of the presentation was one of the most difficult remaining challenges: achieving complete code coverage.

Stefano explained that safety verification requires teams to document the behavior of the software and test that behavior. The combined test results must cover the code included in the certified software, including the independent conditions required for Modified Condition/Decision Coverage, or MC/DC.

This is particularly difficult for an open source project such as Xen.

Xen supports many processor vendors, platforms, configurations, and use cases. However, a specific certified configuration may only use a limited subset of this functionality.

For every code path, the team must therefore either test it or remove it from the final binary.

Removing Unused Code

Xen already uses Kconfig to enable and disable features before compilation. However, this is not sufficiently granular to remove every code path that falls outside a specific safety configuration.

Adding large numbers of conditional compilation statements would also make the upstream code more difficult to maintain.

Instead, the team is using compiler dead-code elimination.

By giving the compiler enough information about the selected configuration, code paths that cannot be reached can be removed automatically from the final binary.

One example involved processor-vendor-specific code. In a configuration that supports only AMD processors, the compiler can remove switch cases for other processor vendors.

Another example involved Xen’s x86 instruction-decoding code. Older x86 systems required Xen to decode trapped guest instructions manually. Modern systems provide more information about the instruction that caused the trap, so many legacy decoding paths are not required.

By limiting the configuration to modern hardware, the compiler can remove those unused paths.

Stefano showed how small source-code changes can allow the compiler to remove large sections of unused code without adding extensive conditional statements throughout the source.

The linker’s garbage-collection functionality can then remove entire functions that are no longer called.

Aligning Coverage Data With the Binary

Removing functions during linking creates an additional coverage challenge. Coverage notes are generated during compilation, but linker garbage collection happens later. As a result, the coverage information may still contain functions that were removed from the final binary.

Those functions could incorrectly appear as uncovered. To address this, the team developed two Python tools.

The first tool analyzes linker information, including the build log, map file, linker output, and DWARF data, to identify functions that were removed. It then creates a plain-text configuration showing which function was removed from which object file.

The second tool uses this information to remove the corresponding entries from the compiler-generated coverage notes. This process also accounts for static inline functions, which may be removed from one object file while remaining present in another.

The result is coverage information that more accurately represents the code included in the final binary.

Automating Fault Injection With QEMU

The session also covered fault injection, which is required to test how the software handles hardware errors.

Traditionally, this work may involve physical hardware and hardware debuggers, making tests difficult to automate and repeat. The team is instead using QEMU so that fault-injection tests can be included in continuous integration workflows.

Stefano described a Python framework that interacts with QEMU through QMP, QTest, and GDB.

QMP can inject events such as non-maskable interrupts and machine-check exceptions. QTest can simulate memory-mapped input/output and I/O port operations. GDB can set breakpoints and modify memory, registers, stacks, and function parameters.

By combining these interfaces, the team can trigger specific Xen error-handling paths and test them without changing the Xen source code for each case.

This makes the tests automated, repeatable, and suitable for use in verification pipelines.

Working With the Open Source Community

Stefano emphasized that the effort is not limited to AMD. Several organizations are contributing to work around Xen and safety, with collaboration taking place in the upstream community.

The goal is not to certify a private fork and leave it unchanged. Instead, the project aims to improve the upstream Xen codebase and make certification easier to maintain and repeat over time.

Making requirements, tools, artifacts, and infrastructure publicly available can also help support different configurations and safety targets in the future.

The session provided a practical look at the remaining work in Xen’s safety-certification effort, including complete code coverage, maintainable code reduction, accurate coverage reporting, automated fault injection, and open source collaboration.

Watch the session recording here.

Stay tuned for more Safety-Critical Software Track session highlights from Open Source Summit North America 2026. Check the playlist here.

Clip - From Pull Request To Patient Safety: How Tidepool Built an Open-Source Quality Management System - Tapani Otala, Tidepool

From Pull Request To Patient Safety: How Tidepool Built an Open-Source Quality Management System

By Blog, Critical Software Summit, Safety-Critical Software Summit

Open Source Summit North America 2026 and Embedded Linux Conference brought together the open source community in Minneapolis from May 18–20, 2026.

According to the event report, the event welcomed 1,231 attendees from 524 organizations, with 68% of attendees in technical positions. The program included 210 conference talks selected from 977 talks submitted, reflecting strong interest and participation across the open source ecosystem.

For the ELISA Project community, the event was an important opportunity to continue the conversation around safety-critical software, open source safety standards, regulatory compliance, requirements traceability, verification, software supply chains, and safety engineering.

The Safety-Critical Software Track highlighted practical work across several domains, including aerospace, embedded systems, medical devices, robotics, avionics, automotive, and industrial systems. Sessions explored how open source communities are addressing the technical, process, and compliance needs of safety-critical systems.

Over the next few weeks, we will highlight selected session recordings from the track and share key takeaways with the community.

Session Highlight: From Pull Request To Patient Safety: How Tidepool Built an Open-Source Quality Management System – Tapani Otala, Tidepool

In this session, Tapani Otala of Tidepool shared how Tidepool built an open source Quality Management System (QMS) for safety-critical medical software.

Tidepool is a nonprofit organization founded by people with diabetes, parents of children with diabetes, and clinicians. The organization builds open source tools for diabetes care, including Tidepool Loop, an automated insulin delivery system. Tidepool Loop uses data from a continuous glucose monitor, runs an algorithm on a phone, and communicates with an insulin pump to adjust insulin delivery. Because the software can influence insulin delivery every five minutes, including while a person is asleep, the system must be developed with strong safety and regulatory controls.

A central point of the talk was that open source and FDA-cleared medical software can coexist. Tidepool Loop was cleared by the FDA as Class II Software as a Medical Device, while the source code remained open. Tapani explained that safety and regulatory standards define what evidence and controls are needed, but they do not require the software to be closed source.

The session outlined the core elements of a QMS, including traceability, verification and validation, risk management, and change control. Tapani described QMS as a controlled, repeatable, and auditable system made up of policies, procedures, records, requirements, risks, tests, reviews, and change history.

A major part of the talk focused on how Tidepool connects engineering work to regulatory evidence. Requirements are tracked in Jira and linked to design, implementation, tests, risks, mitigations, bugs, and other records. These links are not just references; they form the structure that allows Tidepool to trace a requirement through development and testing, and then trace code or test evidence back to the original requirement.

Tapani used a specific requirement for insulin delivery presets as an example. A feature that may appear simple to users can generate a large set of safety and regulatory artifacts, including development tickets, test tickets, risk records, mitigations, UX design work, usability testing, and training requirements. In one example, a requirement for presets was connected to multiple risks and tests, showing how safety-critical software features can create significant downstream evidence needs.

The session also explained how Tidepool generates regulatory outputs from its development data. Instead of manually creating traceability matrices and risk analysis documents after development, Tidepool uses scripts to pull structured information from Jira and generate workbooks for regulatory review. These outputs include traceability views, risk analysis, hazard analysis, cybersecurity hazard analysis, and related summaries. This helps reduce manual drift and keeps documentation connected to the engineering work.

Another important topic was Tidepool’s relationship with the upstream open source Loop community. Tidepool Loop was based on the earlier do-it-yourself Loop project, which was created by a community of people who wanted better automated insulin delivery tools. Tidepool needed to maintain regulatory control over its FDA-cleared product while still staying connected to upstream innovation. The team does this by selectively bringing in changes, running them through the regulatory process, keeping shared code modular, and offering improvements back to the open source community where appropriate.

Tapani also shared lessons learned from building this system. One lesson was that the schema behind tools like Jira matters because issue types, link types, required fields, and relationships become part of the regulatory structure. Another lesson was that heavy workflow gates can slow engineers down, while downstream validation and automated checks can help maintain data quality with less friction.

The broader takeaway for safety-critical open source communities is that transparency can support trust. Tidepool’s experience shows that open source development, regulatory compliance, and safety engineering can work together when traceability, risk management, testing, and change control are built into the development process.

As safety-critical software continues to expand across medical, automotive, aerospace, industrial, and embedded systems, Tidepool’s work offers a practical example of how open source communities can build auditable processes while keeping development open and collaborative.

Watch the session recording here.

Stay tuned for more Safety-Critical Software Track session highlights from Open Source Summit North America 2026. Check the playlist here.

Session Clip - ELISA Seminar – AvioNix: Infrastructure as Code for Linux in Avionics

How AvioNix Supports Reproducibility and Traceability for Linux in Avionics

By Blog, Seminar Series

The ELISA Project hosted a seminar on AvioNix: Infrastructure as Code for Linux in Avionics, featuring Wanja Zaeske, Research Scientist at the German Aerospace Center, and Erin Vanderveen, Sr. Specialist Functional Engineer at Tweag by Modus Create.

The session focused on a key challenge for bringing Linux into safety-critical aviation applications: open source software is distributed and released in many different ways. Compared to COTS walled-garden safety-critical operating systems, this diversity can create long “getting started” processes, “works on my machine” issues, and the need for robust SBOM tracking.

Erin began with an introduction to Nix, explaining that Nix is not one single tool, but an ecosystem that includes the Nix CLI, Nix daemon, Nix store, Nix language, Nix packages, and NixOS. The talk showed how Nix supports declarative, reproducible, and reliable builds by using explicit build inputs, isolated build environments, and unique store paths.

The session also explained how Nix can help solve common dependency and developer environment problems. With Nix, packages and development shells can be described in a way that allows contributors to enter the same build environment and reproduce the same results across machines.

Traceability was another important theme. Because Nix captures exact dependencies and build inputs, it can support detailed SBOM generation. This is especially useful for safety-critical software efforts where teams need a clear view of what components are included and how they were built.

Wanja then showed how these Nix concepts are being applied in the ELISA Aerospace Working Group through AvioNix, a Nix-based approach for building aerospace demo applications. The demonstration used the ELISA Aerospace Working Group repository and showed how contributors can build applications with a single command, compile the Linux kernel, inspect kernel configuration, and create development environments for debugging and experimentation.

The demo also showed how NixOS can be used to build a fully integrated system that includes a Linux kernel, user space, ELISA Aerospace Working Group demo applications, and a NASA cFS-based monitor. This included a light switch demo application and related monitoring software running inside a QEMU-based system.

A practical troubleshooting example highlighted how Nix can support debugging. The speakers showed how to add GDB, enable debug symbols, access the exact source used during the build, identify missing Linux kernel configuration options, and rebuild the system with the required changes.

The session also covered cross-compilation, an important topic for aerospace environments where development machines and target platforms may use different architectures. Nix provides mechanisms to describe build, host, and target platforms so teams can build software for different hardware configurations more consistently.

A key takeaway from the session was that Nix can scale across the software stack. It can support individual packages, development shells, Linux kernel builds, user space, virtual machines, and integrated system images. For the ELISA Aerospace Working Group, AvioNix provides a practical demonstrator for making Linux-based aviation software easier to build, reproduce, test, debug, and share.

The Q&A highlighted practical ways Nix can support existing engineering workflows while improving reproducibility and experimentation. One attendee asked whether it is easy to branch from an existing Nix package to explore changes. Wanja explained that this can be done by copying the expression into a project tree and modifying it, or by using Nix’s override mechanisms. Since Nix treats packages as functions, teams can create variations of a package, apply patches, or adjust build phases without rewriting the entire package definition. This is especially useful in avionics-related work, where less common architectures may require package-specific changes.

Another question focused on whether Nix can replace CMake. Wanja explained that while Nix can be used as a build system, he would not typically use it to replace CMake in a project that already uses CMake. Instead, Nix can layer around CMake by providing the required dependencies, libraries, and build environment. In the demo, the NASA cFS application still used CMake, while Nix handled the surrounding package and dependency setup.

The discussion also compared Nix with building inside a virtual machine and redistributing the VM image. Wanja noted that a VM image alone does not guarantee reproducibility. Build systems may download missing libraries, pull changing upstream branches, or install dependencies dynamically, which can lead to different results over time. With Nix, the desired system is described through Nix expressions, making the build inputs and dependencies more explicit and easier to understand than a binary VM image.

Attendees also asked how Nix compares with CMake or Bazel when starting a new product. Wanja described CMake and Nix as having different scopes: CMake builds the software, while Nix works more like a meta build system that makes the needed dependencies available. Erin added that Nix and Bazel can also be combined, including through Bazel rules that use Nix packages to provide reproducible dependencies.

At the end of the session, there was also a question about the relationship between Dhall and the Nix language. Erin explained that Dhall and the Nix language are both configuration languages, but separate tools. He also noted that Nix as a whole is more than the Nix language; it also includes the CLI, daemon, store, package collection, and NixOS.

As the community continues exploring Linux for safety-critical aviation applications, AvioNix demonstrates how Infrastructure as Code can help improve reproducibility, traceability, and collaboration across open source aerospace development. The discussion also showed that AvioNix is not about replacing existing tools such as CMake, Bazel, virtual machines, or Linux kernel workflows. Instead, it shows how Nix can provide a reproducible and traceable layer around those tools so aerospace contributors can build, debug, test, and share Linux-based demo systems more consistently.

Software Supply Chain Management With the Yocto Project - Joshua Watt, Garmin

Software Supply Chain Management With the Yocto Project – Joshua Watt, Garmin

By Blog, Critical Software Summit, Industry Conference, Safety-Critical Software Summit

Open Source Summit North America 2026 and Embedded Linux Conference brought together the open source community in Minneapolis from May 18–20, 2026.

According to the event report, the event welcomed 1,231 attendees from 524 organizations, with 68% of attendees in technical positions. The program included 210 conference talks selected from 977 talks submitted, reflecting strong interest and participation across the open source ecosystem.

For the ELISA Project community, the event was an important opportunity to continue the conversation around safety-critical software, open source safety standards, regulatory compliance, requirements traceability, verification, software supply chains, and safety engineering.

The Safety-Critical Software Track highlighted practical work across several domains, including aerospace, embedded systems, medical devices, robotics, avionics, automotive, and industrial systems. Sessions explored how open source communities are addressing the technical, process, and compliance needs of safety-critical systems.

Over the next few weeks, we will highlight selected session recordings from the track and share key takeaways with the community.

Session Spotlight: Software Supply Chain Management With the Yocto Project

This week, we are highlighting Software Supply Chain Management With the Yocto Project by Joshua Watt, Garmin.

Managing software supply chains is an important part of safety-critical software. In this session, Joshua described the technologies, methods, and lessons learned that the embedded software space uses to manage software supply chains with the Yocto Project.

The talk began with a core supply chain question: what is inside the binaries being shipped, and can those binaries be traced back to the source code that produced them? Joshua explained that teams need visibility into software versions, origin, licenses, possible tampering, vulnerabilities, and the build infrastructure used to produce final outputs.

Joshua also discussed the role of SBOMs. While the session was not primarily about SBOMs, he explained how SBOMs provide visibility into the software supply chain and offer a standardized format for sharing information with customers, regulators, internal teams, and other stakeholders.

The session then introduced the OpenEmbedded and Yocto Project build flow. Joshua explained the relationship between OpenEmbedded, BitBake, and the Yocto Project, and showed how source code, recipe metadata, and policy information are processed to produce target images, packages, SDKs, firmware, containers, package feeds, and build tools.

A key point in the talk was how BitBake tracks dependencies using task hashes. These hashes connect build inputs, recipe metadata, source code, native tools, cross compilers, target packages, and final images. Because of this, the Yocto Project has a strong link between the software output and the inputs that produced it.

Joshua explained how this information is expressed through SPDX documents generated during the build and merged into a final SBOM. These SBOMs can include runtime dependencies, build-time dependencies, native tools, cross compilers, source files, package outputs, and other build information that the Yocto Project directly knows from its metadata and build process.

The talk also covered static library tracking. Static libraries can be difficult to identify after they are linked into an application, but because the Yocto Project builds from source and can use debug information, it can connect applications back to the static libraries, recipes, and source code that produced them.

Another major topic was reproducible builds. Joshua explained why reproducibility matters for supply chain management, including detecting unexpected changes, identifying possible tampering, improving quality assurance, supporting delta updates, and avoiding unnecessary rebuilds. He also described how the Yocto Project autobuilder tests reproducibility across package formats and host distributions, while encouraging teams to test reproducibility in their own configurations.

The session closed by looking at the build tools tarball, which can replace many host tools and extend supply chain traceability into the build infrastructure itself. Joshua described how this can help teams trace target images back through the tools used to build them and, potentially, to a known trusted host.

For safety-critical software, this session reinforced that supply chain management is about more than producing a list of components. It is about understanding how software is built, where it comes from, what it depends on, and how confidently teams can trace final binaries back to their sources and build process.

Watch the session recording here.

Stay tuned for more Safety-Critical Software Track session highlights from Open Source Summit North America 2026. Check the playlist here.

Modernizing Software Verification - Craig Christianson, United States Air Force

Modernizing Software Verification – Craig Christianson, United States Air Force

By Blog, Critical Software Summit, Industry Conference, Safety-Critical Software Summit

Open Source Summit North America 2026 and Embedded Linux Conference brought together the open source community in Minneapolis from May 18–20, 2026.

According to the event report, the event welcomed 1,231 attendees from 524 organizations, with 68% of attendees in technical positions. The program included 210 conference talks selected from 977 talks submitted, reflecting strong interest and participation across the open source ecosystem.

For the ELISA Project community, the event was an important opportunity to continue the conversation around safety-critical software, open source safety standards, regulatory compliance, requirements traceability, verification, software supply chains, and safety engineering.

The Safety-Critical Software Track highlighted practical work across several domains, including aerospace, embedded systems, medical devices, robotics, avionics, automotive, and industrial systems. Sessions explored how open source communities are addressing the technical, process, and compliance needs of safety-critical systems.

Over the next few weeks, we will highlight selected session recordings from the track and share key takeaways with the community.

Session Spotlight: Modernizing Software Verification

This week, we are highlighting Modernizing Software Verification by Craig Christianson, United States Air Force.

Craig opened the session by discussing the difference between “software craftsmanship” and “software engineering,” using the analogy of building structures to explain why safety-critical software needs more than trial, error, and confidence. When software can affect whether people are protected or put at risk, stronger assurance practices are needed.

The session shared real-world examples of software in safety-critical contexts, including systems where software can help protect lives and systems where failure or compromise could create serious risk. Craig also discussed the compliance challenges faced by software engineers working on safety-critical software, including the rigorous and time-consuming nature of assurance and certification processes.

A key part of the talk focused on software assurance and the role of traceability across requirements, specifications, design, implementation, and maintenance. Craig explained how traditional assurance often depends on systematic evaluation, testing, reviews, and evidence, while formal verification uses mathematical models and proofs to reason about system behavior.

The session then explored how automated reasoning can help improve formal methods by making proofs machine-checkable, repeatable, reusable, and less dependent on manual human reasoning. Craig introduced automated reasoning tools and semantics, and showed how these approaches can help reduce errors in logical reasoning.

Craig also discussed the seL4 microkernel as an example of a system supported by formal verification. The talk explained how a small trusted computing base, strong isolation, and publicly available proofs can support higher assurance, while also noting that formal methods still rely on clearly stated assumptions.

The session concluded with a practical demonstration project built for seL4 using the Microkit build system. Craig walked through a Raspberry Pi example, showing how protection domains, mapped device registers, notifications, and hardware interrupts can be used to build a simple system while reasoning more carefully about separation and system behavior.

As open source continues to expand into regulated and safety-critical domains, this talk highlighted why modern verification methods matter. Formal methods and automated reasoning are not a replacement for all testing, but they can help strengthen assurance, improve traceability, reduce certain classes of errors, and support safer systems over time.

Watch the session recording here.

Stay tuned for more Safety-Critical Software Track session highlights from Open Source Summit North America 2026. Check the playlist here.

ELISA Project at Open Source Summit North America 2026

Recap: ELISA Project at Open Source Summit North America 2026

By Ambassadors, Blog, Safety-Critical Software Summit

Open Source Summit North America 2026 brought together developers, contributors, maintainers, technologists, and community leaders to share knowledge, collaborate on solutions, and push open source projects forward.

The ELISA Project participated in the Safety Critical Software Track, which explored the intersection of open source and safety standards. Sessions covered best practices for regulatory compliance, security updates, safety engineering, requirements traceability, quality assessments, safety analysis methodologies, and technical development for safety-critical systems.

The track featured sessions on Space Grade Linux graduating from ELISA incubation, software supply chain management with the Yocto Project, Xen’s path toward safety certification, Tidepool’s open source quality management system for patient safety, deterministic interoperability in medical robotics, and modern approaches to software verification.

Together, these sessions highlighted how open source communities are advancing practical approaches for building reliable, transparent, and safety-critical systems across industries including aerospace, embedded systems, medical devices, robotics, and critical infrastructure.

The session playlist is now available. Watch the recordings here.

Thank you to all speakers, attendees, contributors, and community members who joined the conversations and continue to support the advancement of open source in safety-critical software.

ELISA project at Open source summit

ELISA Project Momentum Continues: Join Us at Upcoming Workshops, Safety Track Sessions, and Open Source Events

By Blog, ELISA Summit, Industry Conference, Safety-Critical Software Summit, Workshop

The ELISA Project continues to grow as the open source ecosystem increasingly recognizes the importance of safety-critical systems, embedded Linux, requirements traceability, and collaborative safety engineering. Across industries such as automotive, aerospace, industrial, medical, rail, and energy, Linux is playing a larger role in systems where dependability, transparency, and long-term maintainability matter.

As this momentum builds, ELISA is expanding its presence across key open source events in 2026, creating more opportunities for contributors, maintainers, safety experts, developers, and industry leaders to collaborate.

Whether you are already involved in safety-critical Linux or are just beginning to explore how open source can support safety engineering, these upcoming events are great opportunities to learn, contribute, and connect with the ELISA community.

ELISA Workshop London 2026

The next ELISA Workshop will take place June 9–11, 2026, in London, co-hosted with Canonical. The workshop will gather ELISA members, contributors, and ecosystem partners for in-person collaboration, technical discussions, and planning around the project’s next steps. Register for the workshop here.

The London workshop agenda reflects the growing breadth of ELISA’s work. Sessions will explore safety-critical Linux, cybersecurity compliance, PREEMPT_RT latency monitoring, AI-based tooling for safety-critical development, SPDX modeling for safety cases, Software Heritage identifiers, kernel test coverage, safety manuals, Linux kernel requirements, and industry approaches to qualified Linux.

This workshop is an important opportunity for the community to collaborate directly, share progress, discuss challenges, and help define what comes next for safety-critical Linux.

Don’t miss it: registration is required, and seats are limited for in-person attendance.

Open Source Summit 2026 – Mumbai, India

ELISA’s work also connects naturally with the broader conversations happening at Open Source Summit 2026 – Mumbai, India, taking place June 16–17, 2026.

Open Source Summit is a key gathering place for developers, maintainers, technologists, community leaders, OSPO teams, legal experts, policy advocates, standards organizations, and open source ecosystem leaders. It is where the full spectrum of open source communities come together, from Linux and embedded systems to AI, cloud infrastructure, DevOps, security, and safety-critical systems.

The Mumbai event will include tracks such as Embedded, Linux, Linux for Emerging Countries, Open AI & Data, OSS Enabling & Management, Security-adjacent ecosystem topics, Zephyr, and more. For the ELISA community, this is a valuable opportunity to connect safety-critical systems work with adjacent open source domains including embedded Linux, long-term maintenance, security, and ecosystem sustainability.

Open Source Summit 2026 – Seoul, Korea

The momentum continues at Open Source Summit 2026 – Seoul, Korea, taking place August 11–12, 2026.

Like other Open Source Summit events, the Seoul gathering will bring together the technical and non-technical leaders shaping open source. It will provide another important forum for conversations around open source collaboration, governance, safety, security, sustainability, and the role of Linux across industries.

The schedule is expected to go live on June 11, 2026, making this a good time for the ELISA community to watch for relevant sessions, plan participation, and encourage colleagues across the safety-critical and embedded systems ecosystem to attend.

Open Source Summit Europe 2026: Submit Your CFP

ELISA is also encouraging community members to submit proposals for Embedded Linux Conference & Open Source Summit Europe 2026, taking place October 7–9, 2026.

This is a major opportunity to share real-world work, lessons learned, and technical progress related to safety-critical and embedded Linux systems. Suggested submission topics include:

Safety-critical software, open source and safety standards, working with regulatory authorities, security updates for safety-critical systems, safety engineering in open source projects, development data and quality assessment, requirements traceability and testability, safety analysis methodologies, safety-relevant technical features, and case studies from aerospace, automotive, industrial, medical, energy, and other safety-critical domains.

Important dates:

CFP closes: Wednesday, June 24, 2026, at 23:59 CEST
CFP notifications: Friday, July 24, 2026
Schedule announcement: Wednesday, July 29, 2026
Event dates: Wednesday, October 7 – Friday, October 9, 2026

Whether you are working on kernel requirements, safety cases, testing, tooling, compliance, documentation, traceability, or real-world deployment, your experience can help move the ecosystem forward.

ELISA at Linux Plumbers Conference 2026: Safe Systems with Linux Microconference

ELISA will also be part of the Safe Systems with Linux Microconference at Linux Plumbers Conference 2026, taking place October 5–7, 2026, at the Prague Congress Centre in Prague, Czechia, with hybrid participation available.

As Linux is increasingly used in systems with varying levels of criticality, the need for traceability between requirements, code, tests, and supporting artifacts is becoming more urgent. The Safe Systems with Linux Microconference will focus on how the Linux kernel ecosystem can better support structured requirements, documentation, testing, and artifact sharing while preserving the flexibility and speed of upstream development.

This year’s discussion will build on prior work around expressing requirements and traceability as sidecar data structures. Topics will include requirements-driven testing, semantic aspects of kernel requirements, the Linux Kernel Requirements Framework, automation tooling, technical debt reduction, kernel quality initiatives, industry adoption, and the role of requirements in education and onboarding.

The microconference is an excellent place for kernel developers, maintainers, safety architects, tooling experts, and industry stakeholders to collaborate on practical approaches for dependable, safety-relevant systems with Linux.

Why This Matters

The ELISA Project is growing because the need is growing.

Industries want to use Linux and open source software in systems where reliability, accountability, and safety evidence matter. At the same time, open source communities need approaches that respect upstream development practices rather than forcing traditional safety processes into workflows where they do not fit.

ELISA helps bridge that gap.

By bringing together experts from across organizations and industries, ELISA supports shared methods, common terminology, reusable evidence, stronger tooling, and open collaboration around safety-critical Linux. The project’s involvement in workshops, Open Source Summit events, and safety-focused sessions reflects a broader shift: safety-critical open source is no longer a niche conversation. It is becoming a central part of the open source ecosystem.

Get Involved

Now is the time to participate.

Attend the ELISA Workshop in London. Join the conversations at Open Source Summit India, Korea, and Europe. Submit a CFP for Open Source Summit Europe. Take part in the Safe Systems with Linux Microconference at Linux Plumbers Conference. Share your use cases, your challenges, your tools, and your lessons learned.

The future of safety-critical systems with Linux will be built through collaboration, and ELISA is helping create the space for that work to happen.

ELISA Seminar – Functional safety with Xen, Zephyr and Linux for avionics, automotive and industrial

Recap – ELISA Seminar – Functional safety with Xen, Zephyr and Linux for avionics, automotive and industrial

By Ambassadors, Blog, Seminar Series, Technical Update, Working Group

On May 13, 2026, the ELISA Project hosted a seminar exploring how open source technologies including Xen, Zephyr RTOS, and Linux are advancing toward deployment in safety-critical systems across avionics, automotive, and industrial domains.

The session featured Ayan Kumar Halder (AMD) and Matthew Weber (Boeing), who shared ongoing collaborative work around functional safety, mixed-criticality systems, and open source safety certification efforts.

The discussion focused on how Xen, Zephyr, and Linux can be composed into a unified architecture for safety-critical environments. The speakers outlined how Xen can act as a Type-1 hypervisor, isolating workloads with different safety requirements while supporting deterministic execution, static partitioning, and freedom from interference between virtual machines.

A major theme throughout the session was the growing collaboration between the Xen community and the ELISA Project to build an open functional safety ecosystem. The work spans multiple safety standards including ISO 26262, IEC 61508, and DO-178C, with the goal of creating reusable safety certification artifacts and methodologies that can benefit multiple industries.

The seminar highlighted several ongoing technical efforts within the Xen functional safety initiative, including:

  • MISRA C compliance improvements and automated CI checking
  • MPU support for ARM Cortex-R systems
  • Static partitioning and deterministic scheduling
  • Requirements traceability and architecture specifications
  • Domain-based testing, fault injection, fuzzing, and unit testing
  • White-box testing approaches using Ceedling and coverage analysis
  • Open source traceability workflows using Open Fast Trace

The speakers also discussed the importance of defining assumptions of use (AoU) between system components such as firmware, hypervisors, operating systems, and applications. This systems-level perspective is critical for enabling Linux and Xen to operate within certified safety environments.

Matthew Weber shared additional insights from the aerospace domain, explaining how avionics standards such as DO-178C and ARINC 653 complement ongoing automotive safety efforts. The session explored how higher levels of testing rigor, deterministic partitioning, and lifecycle traceability can help support mixed-criticality aerospace systems using open source technologies.

Another key discussion point was sustainability. Functional safety is not a one-time activity but an ongoing engineering process that must evolve alongside code changes, new features, and emerging defects. The speakers emphasized the importance of open collaboration, transparent development processes, and community participation to keep safety-related artifacts and testing continuously maintained.

The session concluded with an invitation for the broader community to get involved through mailing lists, workshops, Git repositories, and upcoming events including the Xen Summit and ELISA workshops.

As open source continues expanding into regulated and safety-critical industries, collaborations like these are helping create the technical foundations, tooling, and community processes needed to support the next generation of safety-focused systems.

Watch for upcoming ELISA seminars and community workshops to continue the conversation around functional safety, mixed-criticality systems, and open source collaboration.

Upcoming ELISA Seminars:

When “Probably Safe” Is Not Safe Enough - ELISA Project blog - Alessandro Carminati, NVIDIA

When “Probably Safe” Is Not Safe Enough

By Ambassadors, Blog, Working Group

This blog is written by Alessandro Carminati, TSC member and Linux Features WG Chair at the ELISA Project and an engineer at NVIDIA.

If you ever worked with Linux, you probably heard something like:

“User space and kernel space are isolated.”

Which is true. And also… not entirely comforting.

Because, as Murphy politely reminds us:

“Anything that can go wrong, will go wrong.”

At the ELISA LFSCS working group, we try to look at Linux from a functional safety perspective. That means we are not satisfied with “it usually works”… we want to understand what could go wrong.

At the ELISA LFSCS working group, we try to look at Linux from a functional safety perspective. That means we are not satisfied with “it usually works”… we want to understand what could go wrong.

From Munich: A Suspicious Idea

During the Munich 2025 session, we discussed what we called the linear mapping threat.

The idea is simple:

  • Linux keeps a linear mapping of physical memory
  • This mapping includes all RAM
  • Kernel objects and user pages come from the same pool

So in theory:

A kernel object page could sit right next to a user page.

Not a fault… Not a bug… Just… how memory is laid out.

And that alone raises a question.

Because if a kernel bug causes an overflow, adjacency matters much more than isolation:

  • overflow → likely direction → next page
  • underflow → possible, but statistically less common
    So the interesting case becomes:

kernel page → next → user page

At that point, this was still a hypothesis. A reasonable one… But still a hypothesis.

From Hypothesis to Observation

So we asked:

Can we observe this situation?

Not in theory. Not in diagrams. But in actual memory.

To be clear, not the fault happening… just the fact that Kernel objects pages and userspace pages can sit next to each other.

The Tool (a.k.a. “Let’s Peek at PFNs”)

Initially, the plan was simple:

“Let’s write a kernel module and scan the linear mapping.” Because… that’s what kernel people do. (Maslow’s Hammer: If the only tool you have is a hammer, you tend to see every problem as a nail)

Then came the slightly embarrassing realization:

“Wait… I can already see this from userspace.”

Using /proc/kpageflags.

And suddenly:

  • no kernel module needed
  • no patching
  • no special hooks

Just a userspace tool reading kernel-exposed data.

Small Technical Box: /proc/kpageflags

/proc/kpageflags exposes metadata for each physical page frame (PFN).

With it, you can:

  • iterate over physical memory
  • classify pages (anonymous, slab, huge, etc.)
  • build a PFN-level view of the system

In practice, the tool:

  • scans PFNs sequentially
  • assigns a category per page
  • renders a colored raster

Think of it as:

a “topographic map” of memory… where mountains are slab pages and plains are user memory. (Yes, the legend is still under construction.)

First Results: “This Looks… Too Clean”

Using the tool on a real system (x86), results were promising:

  • memory looked mixed
  • user and kernel pages were interleaved
  • adjacency was visible

Good.

But the LFSCS working group set its reference platform as aarch64 many moons ago and when if came to the ARM64 VM we’re targeting:

  • almost no user pages
  • almost no slab pages
  • everything looked… suspiciously clean

At this point, either:

  1. the tool was wrong
  2. the kernel was lying
  3. or the system was too nice

What We Learned (a.k.a. “The Plot Thickens”)

Huge Pages Were Hiding Reality

Disabling THP:

echo never > /sys/kernel/mm/transparent_hugepage/enabled

suddenly changed everything.

Why?

Because:

  • userspace sees memory at page granularity (4KB)
  • linear mapping may represent the same memory as huge pages

So we had:

fine-grained user memory vs coarse-grained linear mapping view

Disabling THP aligned the two worlds and revealed the real distribution.

Slab Pages Don’t Like Attention

The SLAB flag is only set on compound head pages.

Meaning:

most kernel objects are there… just not explicitly labeled

So the absence of slab in the visualization was… misleading.

The System Was Too Clean

The VM had:

  • low workload
  • low fragmentation
  • limited kernel activity

In short:

not enough chaos to trigger interesting behavior

Forcing Reality (a.k.a. “Adding Some Chaos”)

One missing piece was understanding that:

a real system naturally creates fragmentation a virtual machine… usually does not

So to observe the phenomenon in a controlled environment, we needed to give to the kernel an helping foot.

The approach was to introduce controlled memory pressure and fragmentation using a small kernel-side helper.

The idea is simple:

  • allocate many temporary objects
  • insert a few persistent objects in between
  • free the temporary ones

Swiss Cheese Kernel Heap

This leaves behind memory pages that are:

  • partially used
  • not reclaimable
  • and therefore fragmented

This creates a layout where:

kernel allocations are spread across many partially filled pages

Which is exactly the condition needed to increase the chance of:

kernel page → next → user page adjacency

Think of memory like a block of cheese:

  • temporary allocations = drilling holes
  • persistent objects = small solid parts left behind

After removing the temporary allocations:

you don’t get a clean empty block you get a holey structure the kernel cannot easily compact

The Key Result

After:

  • fixing classification
  • aligning granularity
  • adding controlled fragmentation

We can say:

Kernel and user pages can be physically adjacent. Not always. Not everywhere. But definitely possible.

And importantly: this can happen naturally on a real system while in a VM it may require forcing conditions

Looking Closer (a.k.a. “What Exactly Is Sitting at the Edge?”)

At this point, we knew that: kernel pages and user pages can be physically adjacent. Which is already interesting.

But adjacency alone does not tell us how easy it is for trouble to cross the border.

If the last object in the kernel page ends hundreds of bytes before the page boundary, then an overflow would need to be fairly enthusiastic.

If instead the object ends exactly at the page boundary…

then even a tiny mistake can immediately step into the next page.

So the obvious next question was: “What is actually sitting at the very end of the slab page?”

Teaching the Tool Some Slab Archaeology

The original direct_map_view PoC was good at classifying pages.

The updated version became slightly more nosy.

Given a user page, it now:

  • looks at the preceding PFN,
  • checks whether that PFN is slab-backed,
  • scans the page,
  • and identifies the kernel object closest to the end of the page.

Using kmem_dump_obj(), the probe can determine which slab cache owns the object and where the object begins.

In other words: we stopped looking only at pages and started looking at what is actually living inside them.

A Typical Result

[   66.010479] pfn_slab_probe: input_pfn=1078469 checked_pfn=1078468 flags=0xbfffe0000000200
[   66.010862] pfn_slab_probe: checked PFN 1078468 is slab-backed, scanning [ffff0000c74c4000 - ffff0000c74c5000)
[   66.011652] slab kmalloc-512 start ffff0000c74c4e00 pointer offset 504 size 512
[   66.013007] pfn_slab_probe: nearest candidate object at ffff0000c74c4ff8, offset 0xff8 into PFN 1078468

The probe did not find an object starting at 0xff8.

It found itself standing 8 bytes before the edge of the page, inside a kmalloc-512 object, at offset 504 from the beginning of that object.

So the math is:

0xff8 - 504 = 0xe00

The object starts at 0xe00 and, being 512 bytes long, ends at 0x1000.

Exactly at the page boundary. Which is the memory-management equivalent of parking with the bumper touching the wall.

Turning Logs into Pictures

Because hexadecimal offsets are excellent at convincing computers but less effective with humans, a small script was added to convert the logs into SVG diagrams.

The result is a picture showing:

  • the slab page,
  • the last kernel object,
  • the page boundary,
  • and the user page immediately after it.

Sometimes, a drawing is worth several hundred printk()s.

From “Interesting Layout” to “Well… That Escalated Quickly”

At this point, we had demonstrated that:

  • a kernel object can sit at the end of a page,
  • the next physical page can belongs to a user process.

The next question was unavoidable: “What happens if the kernel writes past that boundary?”

Fortunately for science, and slightly less fortunately for the victim process, we now have a PoC for that too.

The Victim (a.k.a. “The Simplest Program We Could Get Away With”)

The userspace target is a tiny assembly program, available for both:

Its behavior is intentionally boring:

  1. print the address of a string,
  2. wait,
  3. print the string,
  4. exit.

That is all. No threads. No libraries. No excuses. If something changes, we know exactly who to blame.

Was it that simple?

The PoC script: poc.sh

Coordinates with the kernel module: umem_poke.c

The script does not do magic address translation in bash.

Which is probably good news for everyone. It only coordinates the experiment: it starts the victim, gets the address printed by the process, and passes that VMA address to the module.

The module is the one doing the kernel-side work. It uses GUP to resolve the userspace address to the underlying page, computes the linear mapping address destination byte, and then performs the write.

After all that machinery, the corruption itself is still disappointingly simple:

*dst_target = act.value;

That is it.

  • No ptrace().
  • No copy_to_user().
  • No access_ok().
  • No “Dear Kernel, may I please touch userspace?”

Just a normal assignment. From the kernel’s point of view, this is simply a write to a valid pointer.

Which leads to a slightly uncomfortable realization: once a userspace page is reached through the linear mapping, it stops being special. It is just memory. And the kernel is very good at writing to memory.

“But Surely Read-Only Memory Is Safe?”

A reasonable objection is: “Fine, but this probably works only on writable pages.” That would be reassuring… Would it really?

Even then, the wall would still have a door. Unfortunately, reality is even less reassuring.

The experiment works even when the target string is moved from .bss to .rodata.

In other words, the process sees the page as read-only. The process itself cannot modify the string.

And yet, after the userspace address has been translated to its corresponding location in the linear mapping, changing the supposedly immutable data still requires nothing more sophisticated than:

*dst_target = act.value;

  • No page permissions are changed.
  • No special write mechanism is invoked.
  • No dedicated “modify userspace memory” API is used.

Just a normal store through a valid kernel pointer.

So the surprising part is not that the kernel, in principle, has enough privilege to modify the page. The surprising part is that once the page is reached through the linear mapping, the actual modification is indistinguishable from writing to any other ordinary kernel address.

Same physical page. Different virtual permissions. Same single dereference.

The Grand Finale

Before the write, the program prints one string.

After the write, it prints a different one.

buildroot login: root
# /usr/umem_poke/poc.sh 
running without corruption
message address: 0x0000000000400168
<TOKEN>

running again with corruption
[   27.675393] umem_poke: loading out-of-tree module taints kernel.
message address: 0x0000000000400168
[   28.751270] umem_poke: req: poke memory for pid=107 mem[400168]=1074707572726f63
[   28.752020] umem_poke: act: poke memory for pid=107 mem[400168]=1074707572726f63
corrupt
# 

The process does not crash. The kernel does not panic. No alarms ring. No dramatic music starts.

The application simply continues running with modified data. Which, from a functional safety perspective, is often the most interesting outcome.

Not: “The system exploded.”

But: “The system kept working… incorrectly.”

From Layout Curiosity to Concrete Effect

At this point, the full chain becomes visible:

+---------------------------+
|   shared physical memory  |
+---------------------------+
              |
             \ /
              V
+---------------------------+
|     possible adjacency    |
+---------------------------+
              |
             \ /
              V
+---------------------------+
| kernel object at page end |
+---------------------------+
              |
             \ /
              V
+---------------------------+
|   kernel write defect     |
+---------------------------+
              |
             \ /
              V
+---------------------------+
|   ordinary pointer store  |
+---------------------------+
              |
             \ /
              V
+---------------------------+
| userspace data corruption |
+---------------------------+
              |
             \ /
              V
+---------------------------+
|  incorrect but apparently |
|       normal behavior     |
+---------------------------+

So the original question: “Can kernel and user pages be physically adjacent?”

Now has a more complete answer: Yes. And if a kernel write goes in the wrong direction, the next page may belong to a perfectly innocent process. That process may continue running as if nothing happened, except for the small detail that its data is no longer what it thinks it is.

Why This Matters

From a safety perspective, the concern is not: user → kernel corruption (blocked by MMU)

The concern is:

kernel → anything else

Because in the linear mapping:

  • everything shares the same physical space
  • adjacency is not controlled
  • allocators optimize for performance, not isolation

So when something goes wrong: the target is simply “the next page”

And what that page is… depends on the moment.

Bigger Picture

This PoC is not proving a vulnerability.

It is proving something more subtle: Linux enforces virtual access separation, but does not guarantee physical separation between kernel and userspace allocations.

And in safety: lack of guarantees is already a problem.

Final Thought

The tool didn’t find a bug and this article does not imply Linux is unsafe. It found something more annoying: an assumption that is not always true.

Meaning that physical separation is not an inherent property of the Linux memory manager and must be established through additional architectural controls if required by a safety case.

ELISA blog – All Aboard The New Railways Special Interest Group

All Aboard the new Railways SIG

By Announcement, Blog, Working Group

This blog is written by Henrik Brändle, Chair of the new Railways SIG.

The ELISA (Enabling Linux in Safety Applications) Project continues to advance the use of Linux in safety-critical and regulated systems. By bridging the gap between the flexibility of Linux and the demands of safety-critical certification, the ELISA community is ensuring that the future of autonomous and connected technology is built on a foundation of trust.

Dedicated groups like Automotive, Aerospace, Safety Architecture and the Space Grade Linux Special Interest Group (SIG) have been the engine of ELISA’s progress.

All Aboard: The Railways SIG

Safety-critical systems span more than just the roads for automotives and airplanes.  In fact, rail is the third-most used means of transport [1, fig. 21]. Today, we are excited to announce the launch of the Railways SIG.

This new initiative marks a significant milestone as we bring ELISA’s methodology to the rail industry. The Railways SIG will focus on aligning Linux development with standards, addressing everything from signaling and control systems to automated train operations. It aims to inform all railway stakeholders about the extensive capabilities that open source already offers in the safety domain. At the same time, it represents their specific needs towards the ELISA community, to ensure that future developments continue to benefit railway systems worldwide. 

History of Open Source and Railways

Historically, the railway industry viewed open source with skepticism, believing that public code and community governance couldn’t meet the demands of safety certification. However, in recent years, multiple initiatives have started to challenge this belief by proving that open source projects can achieve high-level functional safety certification while maintaining transparency and collaboration [2][3].

The continuous rise in expected features will lead to an explosion in resulting software complexity. Since the available development resources are not keeping up with the demands, the railway industry willhave to rely on collaboration across sectors to keep delivering software at the expected quality and pace. 

The Vision

The idea for a dedicated Railway SIG was introduced at FOSDEM 2025, where the Railways and Open Transport track served as a launchpad for the vision. Throughout the following year, a diverse community of stakeholders shared their points of view, aligned their vision and collaborated on a path towards a sustainable SIG. 

Following a reconfirmation of interest at FOSDEM 2026, a formal SIG application was submitted in March. As a new group within the ELISA Project umbrella, the Railways SIG will help shape these efforts by bringing forward the specific requirements, development processes, and standards of our industry. This ensures the rail sector benefits from the significant work taking place globally.

Join us!

The first Railways SIG will take place on Tuesday, May 19. Participants can register for the meeting by visiting the ELISA Project public meeting calendar here. Subscribe to the mailing list or learn more information here. We invite all interested parties to join us in shaping the future of safety-critical Linux for railway infrastructure.

If you are interested in the ELISA Project, we invite you to join one of the ELISA working groups and contribute to advancing safety practices in open source together.

To keep up to date about the project, subscribe to the quarterly newsletter or connect with us on ELISA Project LinkedIn or the  ELISA Discord Channel to talk with community and TSC members.

Sources:

[1] [TUMI Transport Outlook 1.5°C (2021)](https://www.transformative-mobility.org/wp-content/uploads/2023/03/TUMI-Transport-Outlook-SoI1tB.pdf)

[2][Ferrocene: This is Rust for critical systems](https://ferrocene.dev/)

[3][Zephyr Safety Overview] (https://docs.zephyrproject.org/latest/safety/safety_overview.html)