(Excuse my delayed reply, still suffering from some flu or whatever...)
On Mon, Mar 17, 2025 at 10:56:04AM +0100, Gerd Hoffman wrote:
> Yep. But we have to sort the details.
>
> (1) How we are going to load kernel + initrd in case the firmware is
> igvm? Just update the igvm to also include linux kernel and
> initrd (see parallel reply from Jörg)? If so, how does the
> launched firmware find the kernel + initrd?
> While digging around in the igvm spec I've seen there is the
> concept of 'parameters'. Can this be used to pass on the memory
> location of kernel + initrd + cmdline? Maybe the kernel hashes too?
The find the locations of the kernel, initrd, cmdline, ... I think IGVM
parameters, either directly or (preferably indirectly) are a good
solution. By "indirectly" I mean to put these regions on a separate and
measured page which also contains the region hashes.
This allows to put these regions as unmeasured memory into the IGVM and
speed up launching on some platforms.
> (2) Will the igvm be generated on the fly from FUKI data? Or should
> the distros ship igvm images with firmware + kernel + initrd?
My preference would be that distros ship the tooling and components to
build IGVM files and build them during kernel update. If a distro comes
up with a generic initrd+cmdline it can also ship pre-built IGVM files.
>From that IGVM-file the tooling can also extract expected measurements
and place them on some trusted verifier (e.g. remote or TPM).
> (3) How we are going to handle uki add-ons?
>
> (4) Do we want keep the region list? Or declare that igvm should be
> used in case a single region is not enough? Or even go all-in and
> use IGVM exclusively?
No strong opinion here, but I just want to mention again that by
allowing a workflow with a pre-defined setup order for CVMs, the
implemented order in QEMU/KVM can not be changed afterwards without
breaking measurements for users.
Regards,
Joerg