wiki:Developer/Projects/Open/Paravirtualization

Version 6 (modified by Gedare, on 02/11/12 at 02:49:21) (diff)

/* Adapt RTEMS for privileged instructions */

RTEMS Paravirtualization

Table of Contents

    Error: Page Projects/Paravirtualization does not exist

Mentors:

Status: New features to be designed. A previous GSOC project started to investigate this topic. See RTEMSSummerOfCode2011

Introduction: The overall project consists in adapting RTEMS to be executed on top of an hypervisor so that we can run RTEMS instances on a partitioned kernel (such as ARINC653-related isolation layers like PikeOS, VxWorks?, etc...). To do so, it is necessary to (1) define a architecture-agnostic API to run RTEMS as a guest operating system and (2) tailor an existing hypervisor to execute RTEMS instances in several partitions.

Goal: make RTEMS compliant with partitioned kernel/isolation layer and make a proof-of-concept by collocating several RTEMS instances on top of an existing FOSS separation kernel

Requirements: low-level development, intel/sparc instructions, kernel design

Resources: Existing partitioning/isolation layer, such as POK (see http://pok.safety-critical.net) or AIR (http://air.di.fc.ul.pt/)

Proposed Approach

The project could be separated in two different efforts : define an API in RTEMS to execute privileged instructions and adapt an existing partitioning kernel to execute RTEMS instance.

Adapt RTEMS for privileged instructions

This consists in reviewing RTEMS code and identifying which part of the code requires privileged instructions. After these code review efforts, the goal of this first activity would be used to design an architecture-agnostic API to execute privileged instructions. Basically privileged instructions would be wrapped so that when RTEMS is running as a guest OS it will instead make hypercalls to the hypervisor layer.

Finally, the last part of this effort would consist in implementing the API for one or two architectures (initially x86 and SPARC are good targets) and lay the road map for more ports.

For that, the project could reuse the results of the previous Google Summer of Code project (in 2011) (see RTEMSSummerOfCode2011)

Adapt existing isolation layer

Second step of this project is to adapt an existing partitioning kernel/isolation layer to execute RTEMS instances. Ideally, this would be implemented in an existing FOSS isolation layer. Actually, two FOSS projects provide such functionalities : Air and POK. Ideally, developers may evaluate the feasibility on each isolation kernel and choose the most appropriate solution.

References