** Description changed:
+ [ Impact ]
+
+ The firmware descriptor shipped by the ovmf-amdsev package
+ (/usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json) advertises the
+ "amd-sev-snp" feature but maps the firmware as a "flash" device in
+ "stateless" mode:
+
+ "mapping": {
+ "device": "flash",
+ "mode": "stateless",
+ "executable": {
+ "filename": "/usr/share/ovmf/OVMF.amdsev.fd",
+ "format": "raw"
+ }
+ },
+
+ AMD SEV/SEV-SNP does not allow code execution from standard read/write
+ pflash memory. SEV-SNP guests require the firmware to be loaded via the
+ QEMU -bios option (i.e. as a stateless ROM image), not through the
+ traditional split pflash architecture.
+
+ Because this descriptor tells libvirt to use pflash, when it selects this
+ firmware for a SEV-SNP instance, QEMU fails to start with:
+
+ pflash with kvm requires KVM readonly memory support
+
+ As a result, SEV-SNP guests cannot be launched with the firmware
+ descriptor provided by the package.
+
+ [ Fix ]
+
+ Change the descriptor mapping to use "device": "memory", which instructs
+ libvirt to load the firmware through QEMU's -bios option instead of
+ pflash:
+
+ "mapping": {
+ "device": "memory",
+ "filename": "/usr/share/ovmf/OVMF.amdsev.fd"
+ },
+
+ The fix is a one-line-intent change to a single JSON descriptor file
+ (debian/descriptors/60-edk2-x86_64-amdsev.json).
+
+ It has been reported and merged in Debian:
+
+ https://salsa.debian.org/qemu-
+ team/edk2/-/commit/cd29050a899b9843835aec07b418931b27a7784a
+
+ This is already fixed in the development release Stonking (edk2
+ 2026.05-2ubuntu1).
+
+ [ Test Plan ]
+
+ On an AMD host with SEV-SNP enabled in firmware and kernel:
+
+ 1. Install the ovmf-amdsev package from -proposed.
+ 2. Confirm the descriptor now maps the firmware as a memory/ROM device:
+
+ grep -A2 '"mapping"'
+ /usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json
+
+ It must show "device": "memory" and no "flash"/pflash mapping.
+
+ 3. Define and start a SEV-SNP guest using libvirt (letting libvirt select
+ the firmware automatically via features, or referencing the amdsev
+ firmware). See:
+
https://ubuntu.com/server/docs/how-to/virtualisation/sev-snp/#host-configuration
+
+ 4. Verify the guest boots successfully and QEMU no longer fails with
+ "pflash with kvm requires KVM readonly memory support".
+
+ 5. Inside the guest, confirm SEV-SNP is active, e.g.:
+
+ dmesg | grep -i -E 'sev|snp'
+
+ With the unfixed package, step 4 fails and the guest cannot start.
+
+ [ Where problems could occur ]
+
+ The change only touches the amd-sev firmware descriptor consumed by
+ libvirt/QEMU for AMD SEV/SEV-SNP guests; no firmware binary is rebuilt or
+ modified.
+
+ The switch from "flash" (pflash) to "memory" (-bios) changes how the
+ firmware image is presented to the guest for this specific descriptor.
+ This is the required and expected mode for SEV/SEV-SNP, but if any tooling
+ or automation relied on the previous pflash mapping for the amd-sev
+ firmware, it could observe a behavioural change (e.g. no writable pflash
+ varstore for this firmware). The amd-sev descriptor is only selected for
+ confidential-computing SEV guests, so non-SEV guests and other firmware
+ descriptors are unaffected.
+
+ [ Other Info ]
+
+ Fixed in the development release: edk2 2026.05-2ubuntu1 (LP: #2160129,
+ Fix Released).
+
+ Debian bug/merge: https://salsa.debian.org/qemu-team/edk2/-/merge_requests/29
+ Upstream AMD reference: https://github.com/AMDESE/AMDSEV/issues/236
+
+ -- Original report --
+
The firmware descriptor file installed by the current ovmf-amdsev
package (2025.11-3ubuntu7) contains the following content.
/usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json
---
{
"description": "UEFI firmware for x86_64, with SEV-ES support",
"interface-types": [
"uefi"
],
"mapping": {
"device": "flash",
"mode": "stateless",
"executable": {
"filename": "/usr/share/ovmf/OVMF.amdsev.fd",
"format": "raw"
}
},
"targets": [
{
"architecture": "x86_64",
"machines": [
"pc-q35-*"
]
}
],
"features": [
"amd-sev",
"amd-sev-es",
"amd-sev-snp",
"verbose-dynamic"
],
"tags": [
]
}
---
Although "amd-sev-snp" appears in its feature list, this descriptor is
not compatible with SEV-SNP. For SEV-SNP instance only the rom type
firmware is accepted, but the descriptor makes libvirt to use pflash
type instead.
When an instance is created with SEV-SNP encryption and libvirt selects
this firmware, qemu fails to start due to the error "pflash with kvm
requires KVM readonly memory support".
To allow SEV-SNP instances launch properly, the mapping field should be
updated to:
---
...
"mapping": {
"device": "memory",
"filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd"
},
...
---
Note:
That "device": "memory" is the flag to tell libvirt to use the -bios option
in qemu, which is described in the qemu command line example in
https://ubuntu.com/server/docs/how-to/virtualisation/sev-snp/#host-configuration
.
** Also affects: edk2-hwe (Ubuntu)
Importance: Undecided
Status: New
** Also affects: edk2 (Ubuntu Resolute)
Importance: Undecided
Status: New
** Also affects: edk2-hwe (Ubuntu Resolute)
Importance: Undecided
Status: New
** Changed in: edk2 (Ubuntu Resolute)
Assignee: (unassigned) => Hector CAO (hectorcao)
** Changed in: edk2-hwe (Ubuntu)
Assignee: (unassigned) => Hector CAO (hectorcao)
** Changed in: edk2-hwe (Ubuntu Resolute)
Assignee: (unassigned) => Hector CAO (hectorcao)
** Description changed:
[ Impact ]
+
+ - Only affect >= Resolute
The firmware descriptor shipped by the ovmf-amdsev package
(/usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json) advertises the
"amd-sev-snp" feature but maps the firmware as a "flash" device in
"stateless" mode:
- "mapping": {
- "device": "flash",
- "mode": "stateless",
- "executable": {
- "filename": "/usr/share/ovmf/OVMF.amdsev.fd",
- "format": "raw"
- }
- },
+ "mapping": {
+ "device": "flash",
+ "mode": "stateless",
+ "executable": {
+ "filename": "/usr/share/ovmf/OVMF.amdsev.fd",
+ "format": "raw"
+ }
+ },
AMD SEV/SEV-SNP does not allow code execution from standard read/write
pflash memory. SEV-SNP guests require the firmware to be loaded via the
QEMU -bios option (i.e. as a stateless ROM image), not through the
traditional split pflash architecture.
Because this descriptor tells libvirt to use pflash, when it selects this
firmware for a SEV-SNP instance, QEMU fails to start with:
- pflash with kvm requires KVM readonly memory support
+ pflash with kvm requires KVM readonly memory support
As a result, SEV-SNP guests cannot be launched with the firmware
descriptor provided by the package.
[ Fix ]
Change the descriptor mapping to use "device": "memory", which instructs
libvirt to load the firmware through QEMU's -bios option instead of
pflash:
- "mapping": {
- "device": "memory",
- "filename": "/usr/share/ovmf/OVMF.amdsev.fd"
- },
+ "mapping": {
+ "device": "memory",
+ "filename": "/usr/share/ovmf/OVMF.amdsev.fd"
+ },
The fix is a one-line-intent change to a single JSON descriptor file
(debian/descriptors/60-edk2-x86_64-amdsev.json).
It has been reported and merged in Debian:
https://salsa.debian.org/qemu-
team/edk2/-/commit/cd29050a899b9843835aec07b418931b27a7784a
This is already fixed in the development release Stonking (edk2
2026.05-2ubuntu1).
[ Test Plan ]
On an AMD host with SEV-SNP enabled in firmware and kernel:
1. Install the ovmf-amdsev package from -proposed.
2. Confirm the descriptor now maps the firmware as a memory/ROM device:
- grep -A2 '"mapping"'
+ grep -A2 '"mapping"'
/usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json
- It must show "device": "memory" and no "flash"/pflash mapping.
+ It must show "device": "memory" and no "flash"/pflash mapping.
3. Define and start a SEV-SNP guest using libvirt (letting libvirt select
- the firmware automatically via features, or referencing the amdsev
- firmware). See:
-
https://ubuntu.com/server/docs/how-to/virtualisation/sev-snp/#host-configuration
+ the firmware automatically via features, or referencing the amdsev
+ firmware). See:
+
https://ubuntu.com/server/docs/how-to/virtualisation/sev-snp/#host-configuration
4. Verify the guest boots successfully and QEMU no longer fails with
- "pflash with kvm requires KVM readonly memory support".
+ "pflash with kvm requires KVM readonly memory support".
5. Inside the guest, confirm SEV-SNP is active, e.g.:
- dmesg | grep -i -E 'sev|snp'
+ dmesg | grep -i -E 'sev|snp'
With the unfixed package, step 4 fails and the guest cannot start.
[ Where problems could occur ]
The change only touches the amd-sev firmware descriptor consumed by
libvirt/QEMU for AMD SEV/SEV-SNP guests; no firmware binary is rebuilt or
modified.
The switch from "flash" (pflash) to "memory" (-bios) changes how the
firmware image is presented to the guest for this specific descriptor.
This is the required and expected mode for SEV/SEV-SNP, but if any tooling
or automation relied on the previous pflash mapping for the amd-sev
firmware, it could observe a behavioural change (e.g. no writable pflash
varstore for this firmware). The amd-sev descriptor is only selected for
confidential-computing SEV guests, so non-SEV guests and other firmware
descriptors are unaffected.
[ Other Info ]
Fixed in the development release: edk2 2026.05-2ubuntu1 (LP: #2160129,
Fix Released).
Debian bug/merge: https://salsa.debian.org/qemu-team/edk2/-/merge_requests/29
Upstream AMD reference: https://github.com/AMDESE/AMDSEV/issues/236
-- Original report --
The firmware descriptor file installed by the current ovmf-amdsev
package (2025.11-3ubuntu7) contains the following content.
/usr/share/qemu/firmware/60-edk2-x86_64-amdsev.json
---
{
"description": "UEFI firmware for x86_64, with SEV-ES support",
"interface-types": [
"uefi"
],
"mapping": {
"device": "flash",
"mode": "stateless",
"executable": {
"filename": "/usr/share/ovmf/OVMF.amdsev.fd",
"format": "raw"
}
},
"targets": [
{
"architecture": "x86_64",
"machines": [
"pc-q35-*"
]
}
],
"features": [
"amd-sev",
"amd-sev-es",
"amd-sev-snp",
"verbose-dynamic"
],
"tags": [
]
}
---
Although "amd-sev-snp" appears in its feature list, this descriptor is
not compatible with SEV-SNP. For SEV-SNP instance only the rom type
firmware is accepted, but the descriptor makes libvirt to use pflash
type instead.
When an instance is created with SEV-SNP encryption and libvirt selects
this firmware, qemu fails to start due to the error "pflash with kvm
requires KVM readonly memory support".
To allow SEV-SNP instances launch properly, the mapping field should be
updated to:
---
...
"mapping": {
"device": "memory",
"filename": "/usr/share/edk2/ovmf/OVMF.amdsev.fd"
},
...
---
Note:
That "device": "memory" is the flag to tell libvirt to use the -bios option
in qemu, which is described in the qemu command line example in
https://ubuntu.com/server/docs/how-to/virtualisation/sev-snp/#host-configuration
.
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2160129
Title:
Descriptor file for amd-sev is not compatible with SEV-SNP
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/edk2/+bug/2160129/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs