[libvirt PATCH] qemu: support parsing firmware descriptor flash 'mode' for optional NVRAM

Michal Prívozník mprivozn at redhat.com
Wed Feb 23 16:19:33 UTC 2022


On 2/17/22 12:54, Daniel P. Berrangé wrote:
> Currently the 'nvram_template' entry is mandatory when parsing the
> firmware descriptor based on flash. QEMU is extending the firmware
> descriptor spec to make the 'nvram_template' optional, depending
> on the value of a new 'mode' field:
> 
>   - "split"
>       * "executable" contains read-only CODE
>       * "nvram_template" contains read-write VARS
> 
>   - "combined"
>       * "executable" contains read-write CODE and VARs
>       * "nvram_template" not present, as the "executable"
>         is effectively the template on its own
> 
>   - "stateless"
>       * "executable" contains read-only CODE and VARs
>       * "nvram_template" not present
> 
> In the latter case, the guest OS can write vars but the firmware will
> make no attempt to persist them, so any changes will be lost at
> poweroff.
> 
> For now we parse this new 'mode' but discard any firmware which is not
> 'mode=split' when matching for a domain. This is the minimum required
> to have libvirt not break when seeing the new firmware descriptors.
> Future changes will support the new modes.
> 
> In the tests we have a mixture of files with and without the mode
> attribute.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/qemu/qemu_firmware.c                      | 79 ++++++++++++++++---
>  .../share/qemu/firmware/50-ovmf-sb-keys.json  | 33 ++++++++
>  .../out/usr/share/qemu/firmware/61-ovmf.json  | 31 ++++++++
>  .../out/usr/share/qemu/firmware/70-aavmf.json | 28 +++++++
>  .../qemu/firmware/45-ovmf-sev-stateless.json  | 31 ++++++++
>  .../qemu/firmware/55-ovmf-sb-combined.json    | 33 ++++++++
>  .../usr/share/qemu/firmware/60-ovmf-sb.json   |  1 +
>  tests/qemufirmwaretest.c                      | 31 ++++++--
>  8 files changed, 246 insertions(+), 21 deletions(-)
>  create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/50-ovmf-sb-keys.json
>  create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/61-ovmf.json
>  create mode 100644 tests/qemufirmwaredata/out/usr/share/qemu/firmware/70-aavmf.json
>  create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/45-ovmf-sev-stateless.json
>  create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/55-ovmf-sb-combined.json

Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

and safe for the freeze.

Michal




More information about the libvir-list mailing list