
[adding Daniel to CC] On Tue, Aug 05, 2025 at 05:17:14AM -0700, Andrea Bolognani wrote:
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