]> rtime.felk.cvut.cz Git - jailhouse.git/commit
tools, inmates: Add "cell linux" subcommand to jailhouse tool
authorJan Kiszka <jan.kiszka@siemens.com>
Sun, 24 May 2015 08:10:22 +0000 (10:10 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Sun, 7 Jun 2015 17:05:20 +0000 (19:05 +0200)
commitf7bd8491773f33409ea0bbcd2dc0bd4051e50ac6
treeb97b800c89d966d624cab59da8e8e6f0cd143938
parent4fc6a0fedb458bfc9d1b1802d193979737a30c22
tools, inmates: Add "cell linux" subcommand to jailhouse tool

This adds support for loading and booting paravirtualized x86 Linux
kernels in non-root cells. The jailhouse tool is extended for this
purpose with a new subcommand "cell linux" that accepts the cell
configuration, the kernel image and an optional initrd as input. Also a
kernel command line can be specified. The script then creates the cell,
unless it already exists, load kernel, initrd, a special boot loader and
the required parameters for that loader into the cell RAM. Finally, it
starts the cell.

The interface between python helper and the boot loader inmate is based
on the kernels boot_params structure with a custom setup_data extension.
The former is initialized by the python help, specifically to inform
Linux about the location of its initrd and the command line. It also
contains an e820 list to report the memory layout. The setup_data is
filled by the boot loader with information about the PM timer address
and the available CPUs as well as their physical APIC IDs. For that
purpose, the Linux cell requires a communication region.

Although the loader script is currently x86-only, extension to ARM is
surely feasible as well.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Makefile
inmates/tools/x86/Makefile
inmates/tools/x86/linux-loader.c [new file with mode: 0644]
tools/Makefile
tools/jailhouse-cell-linux [new file with mode: 0755]
tools/jailhouse.c