Internships/ProjectIdeas/JailhouseNewConfigFormat

From QEMU
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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>