Internships/ProjectIdeas/JailhouseNewConfigFormat

From QEMU

New configuration format for Jailhouse

Summary: Define a new Jailhouse configuration source file format and implement a compiler for it

So far, the configuration files for the Jailhouse hypervisor are defined in C by filling structures and array and then translated into their binary representation via standard gcc. In order to simplify the error-prone definition process while keeping the binary output format unchanged, a new source form shall be developed. That could be YAML-based, but alternatives can be discussed as well.

The requirements on the format are

  • human readability (no XML...)
  • easily modifiable by humans (e.g. by using symbolic labels for references, instead of array indexes)
  • unambitious transformation into binary format
  • optional: support for including or referencing common fragments (e.g. device resources initially used by root cell, then transferred to a non-root cell)
  • optional: support for grouping of associated resources (e.g. a PCI device with its capabilities and memory regions)

In order to use the format in place of the existing C descriptions, a compiler shall be written (can be in Python, C or a mixture) to generate the binary representation of the configuration files and hooked into the Jailhouse build process. There will surely be a transitional phase before the new format is matured and old format can be discontinued. This phase will likely last longer than this project.

Links:

Details:

  • Skill level: advanced
  • Language: Python, C
  • Mentors: Jan Kiszka <jan.kiszka@web.de>, Valentine Sinitsyn <valentine.sinitsyn@gmail.com>