Platform Contributions

How to contribute a platform port and what it means to be a long-term platform maintainer.

While it is exciting to see seL4 running on as many platforms as possible, maintaining each new platform to the standard expected by our community, including testing and validating its formal verification, comes with an ongoing cost.

The Technical Steering Committee has therefore set the following requirements and expectations for seL4 platform ports.

Platform port requirements

For a platform port to be accepted, it should:

Passing sel4test and sel4bench often requires a rudimentary user-level timer driver and serial driver. A platform port within an architecture that is already supported by seL4 usually does not need to go through the RFC process. A set of pull requests to the kernel, sel4test, sel4bench, and the docsite usually suffices.

See also the platform porting guidelines on the seL4 docsite. If you require seL4 on a new platform and do not want to port and contribute it yourself, one of the commercial service providers in the seL4 Foundation may be able to help.

Platform owners

Sometimes longer-term maintenance of a platform does not sit with the seL4 Foundation, but with the original contributor of the platform or another volunteer with an interest in longer-term support for that platform. They are acknowledged and named on the list of supported platforms.

The expectation is that a platform owner

  • is the maintainer of platform-specific kernel and library code for that platform;

  • is the “driver” for that platform, setting the direction where things are going for the platform;

A platform owner has the following responsibilities:

  • keep the platform working, make sure sel4test and sel4bench are passing on the master branch for all supported configurations, especially for MCS, but also multicore, and hyp/IOMMU where relevant.
  • write and maintain documentation for the platform.
  • help to keep the verification passing for verified configurations.
  • handle bug reports for that platform on GitHub and development mailing list.
  • handle support requests/questions for that platform.
  • review and help merge PRs for that platform. Relevant PRs should have one approving review from the platform owner if possible.
  • if possible providing binaries for bootloader and load instructions.
  • if other development on the master branch has platform impact, it should preferably include relevant platform code updates already, but might need consultation with the platform owner to get done, i.e. the basic expectation would be “you break it, you fix it”, but people sometimes might need help.

If this looks like a long list – this is only a small fraction of the maintenance the seL4 Foundation usually provides to the community. Luckily, most of the time seL4 maintenance does not require much action from platform owners once everything is set up and working.