On Mon, Aug 25, 2025 at 05:12:57PM -0600, Jim Fehlig wrote:
> On 8/25/25 10:19, Andrea Bolognani via Devel wrote:
> > One of the new test cases demonstrates how firmware
> > autoselection doesn't currently work correctly for domains
> > using SEV-SNP: the descriptor for a suitable firmware exists,
> > and yet it doesn't get picked up.
>
> But the descriptor is incorrect. Autoselection using current git master
> works fine with a proper descriptor for SNP.

It's true, the current descriptor for SEV-SNP is incorrect as it
causes libvirt to use pflash instead of rom. But the fact that
libvirt will ignore the current descriptor unless

  <loader stateless='yes'/>

is present in the domain configuration, as demonstrated by the test
case that I'm adding in this patch, is a problem of its own, and
indeed the one that you reported in the first place ;)

So yes, we need to fix both issues, the one in libvirt and the one in
the descriptors. Solving the latter first would merely sweep the
former under the carpet, not make it go away.

> IMO, we need to fix the descriptors (patches 8 and 9) before adding more
> tests with invalid config.

I'm doing things in this order deliberately. Adding a failing test
establishes the current baseline for the functionality, so that when
the fix is applied you can see the improvement reflected directly in
the test suite, confirming its effectiveness. Adding tests after the
fact only demonstrates that the feature now works, not that it was
broken beforehand.

> > +-blockdev 
> > '{"driver":"file","filename":"/usr/share/edk2/ovmf/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}'
> >  \
> > +-blockdev 
> > '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}'
> >  \
> > +-blockdev 
> > '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","read-only":false}'
> >  \
>
> Writable pflash is not compatible with SEV(-ES) guests.

Is that so? According to

  https://libvirt.org/kbase/launch_security_sev.html

a stateless firmware is only a requirement if boot measurements are
desired, which IIUC is not necessarily always the case.

In fact, the full XML example at the bottom of that document is using
stateful firmware.

To be clear, I'm tentatively in favor of moving towards a world in
which stateless firmware is used consistently across the board for
SEV guests, but we need to ensure that we don't cause disruption for
existing users in the process.

-- 
Andrea Bolognani / Red Hat / Virtualization

Reply via email to