Hi,
> +/* disable vmlaunchupdate interface */
> +#define VM_LAUNCHUPDATE_CTL_DISABLE (1 << 0)
> +/* revert to the original host provided igvm */
> +#define VM_LAUNCHUPDATE_CTL_HOST_IGVM (1 << 1)
Hmm, I think these bits need a more verbose comment, especially the
combination of the two ...
HOST_IGVM=0 DISABLE=0
Supplied IGVM file replaces the firmware permanently. Updating the
firmware again is possible.
HOST_IGVM=0 DISABLE=1
Supplied IGVM file replaces the firmware permanently. Updating the
firmware again is not possible.
HOST_IGVM=1 DISABLE=0
Supplied IGVM file replaces the firmware for one reset. Resetting
again will switch back to the original firmware. Updating the
firmware again is possible.
HOST_IGVM=1 DISABLE=1
Supplied IGVM file replaces the firmware for one reset. Resetting
again will switch back to the original firmware. Updating the
firmware again is NOT possible.
Question: How long will the 'disable' flag be active? Specifically
will switching back to the original firmware also clear the 'disable'
flag? Which I think makes sense.
Another question: What happens when using HOST_IGVM=0 first and later
on HOST_IGVM=1?
> +typedef struct {
> + /* api version */
> + uint16_t version;
> +
> + /*
> + * The guest can read this in order to determine if loading new IGVM
> + * succeeded.
> + */
> + uint16_t status;
uint32_t _padding;
> +
> + /* VMM capabilities, read-only. */
> + uint64_t capabilities;
> + /* control bits, see VMFWUPDATE_CTL_* */
> + uint64_t control;
take care,
Gerd
PS: you should cc alex for v3