On Tue, Aug 05, 2025 at 12:56:56PM +0200, Gerd Hoffmann wrote:
> > Assuming that
> >
> >   * the need to use -bios for SEV-SNP is intended;
>
> Yes.  SEV-SNP (and TDX too) are by design incompatible with pflash
> emulation.  Both do not allow the host change guest memory layout
> after launch, and pflash needs to do that to switch between reading
> mode and programming mode.

Thanks for providing the additional insight.

> >   * pflash still needs to be used for SEV (-ES?);
>
> You can use pflash with SEV + SEV-ES.  It makes sense to do that if
> you want use a persistent variable store in pflash.  Otherwise it
> doesn't make much of a difference whenever you use -bios or read-only
> pflash for the firmware.

The current descriptor uses mode=stateless so there is not going to
be a persistent variable store.

> > then I think that we need to have the edk2 package ship two separate
> > descriptors pointing to the same file, one containing
> >
> >   {
> >     "mapping": {
> >         "device": "flash",
> >         "mode": "stateless",
> >         "executable": {
> >             "filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd",
> >             "format": "raw"
> >         }
> >     },
> >     "features": [
> >         "amd-sev",
> >         "amd-sev-es"
> >     ]
> >   }
> >
> > for SEV(-ES) and one containing
> >
> >   {
> >     "mapping": {
> >         "device": "memory",
> >         "filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd"
> >     },
> >     "features": [
> >         "amd-sev-snp"
> >     ]
> >   }
> >
> > for SEV-SNP.
>
> That should work.  Using device=memory for all three amd-sev* variants
> should work too I think.

Daniel suggested that elsewhere in the thread and of course it's an
appealing proposition, as it would keep complexity down and unify
handling across CVM use cases.

However I wonder if changing things would break migration for
existing SEV(-ES) guests. I think it would be fine since the current
pflash-based configuration would be transmitted as part of the
migration XML, so they will simply keep using that.

If I'm right about the above, then I agree that we should just switch
the existing SEV descriptor to device=memory.

-- 
Andrea Bolognani / Red Hat / Virtualization

Reply via email to