# Hafnium Manifest

[TOC]

## Format

The format of the manifest is a simple DeviceTree overlay:

```
/dts-v1/;

/ {
	hypervisor {
		compatible = "hafnium,hafnium";

		vm1 {
			debug_name = "name";
			kernel_filename = "vmlinuz";
			ramdisk_filename = "initrd.img";
		};

		vm2 {
			debug_name = "name";
			kernel_filename = "filename";
			vcpu_count = <N>;
			mem_size = <M>;
		};
		...
	};
};
```

## Example

The following manifest defines a primary VM with two secondary VMs. The first
secondary VM has 1MB of memory, 2 CPUs and kernel image called `kernel0`
(matches filename in Hafnium's [ramdisk](HafniumRamDisk.md)). The second has 2MB
of memory, 4 CPUs and, by omitting the `kernel_filename` property, a kernel
preloaded into memory. The primary VM is given all remaining memory, the same
number of CPUs as the hardware, a kernel image called `vmlinuz` and a ramdisk
`initrd.img`. Secondaries cannot have a ramdisk.

```
/dts-v1/;

/ {
	hypervisor {
		compatible = "hafnium,hafnium";

		vm1 {
			debug_name = "primary VM";
			kernel_filename = "vmlinuz";
			ramdisk_filename = "initrd.img";

			smc_whitelist = <
				0x04000000
				0x3200ffff
				>;
		};

		vm2 {
			debug_name = "secondary VM 1";
			kernel_filename = "kernel0";
			vcpu_count = <2>;
			mem_size = <0x100000>;

			smc_whitelist_permissive;
		};

		vm3 {
			debug_name = "secondary VM 2";
			vcpu_count = <4>;
			mem_size = <0x200000>;
		};
	};
};
```

## Compiling

Hafnium expects the manifest inside its [RAM disk](HafniumRamDisk.md),
in DeviceTree's binary format (DTB).

Compile the manifest's source file into a DTB with:
```shell
prebuilts/linux-x64/dtc/dtc -I dts -O dtb --out-version 17 -o manifest.dtb <manifest_source_file>
```
