On Tue, Jul 29, 2025 at 03:28:49PM -0600, Jim Fehlig wrote:
> On 5/13/25 14:25, Jim Fehlig wrote:
> > On 4/24/25 14:18, Jim Fehlig wrote:
> > > On 4/24/25 04:59, Daniel P. Berrangé wrote:
> > > > On Mon, Apr 21, 2025 at 01:38:35PM -0600, Jim Fehlig via Devel wrote:
> > > > > Hi All,
> > > > > 
> > > > > While investigating an internal bug report, we noticed that a minimal
> > > > > firmware auto-selection configuration along with SEV* fails to find a 
> > > > > match.
> > > > > E.g. the following config
> > > > > 
> > > > > <domain type="kvm">
> > > > >    <os firmware="efi">
> > > > >      <type arch="x86_64" machine="q35">hvm</type>
> > > > >      <boot dev="hd"/>
> > > > >    </os>
> > > > >    <launchSecurity type="sev">
> > > > >      <policy>0x07</policy>
> > > > >    </launchSecurity>
> > > > > ...
> > > > > </domain>
> > > > > 
> > > > > Fails with "Unable to find 'efi' firmware that is compatible with the
> > > > > current configuration". A firmware that should match has the 
> > > > > following json
> > > > > description
> > > > > 
> > > > > {
> > > > >      "description": "UEFI firmware for x86_64, with AMD SEV",
> > > > >      "interface-types": [
> > > > >          "uefi"
> > > > >      ],
> > > > >      "mapping": {
> > > > >          "device": "flash",
> > > > >     "mode": "stateless",
> > > > >          "executable": {
> > > > >              "filename": "/usr/share/qemu/ovmf-x86_64-sev.bin",
> > > > >              "format": "raw"
> > > > >          }
> > > > >      },
> > > > >      "targets": [
> > > > >          {
> > > > >              "architecture": "x86_64",
> > > > >              "machines": [
> > > > >                  "pc-q35-*"
> > > > >              ]
> > > > >          }
> > > > >      ],
> > > > >      "features": [
> > > > >          "acpi-s4",
> > > > >     "amd-sev",
> > > > >     "amd-sev-es",
> > > > >     "amd-sev-snp",
> > > > >          "verbose-dynamic"
> > > > >      ],
> > > > >      "tags": [
> > > > > 
> > > > >      ]
> > > > > }
> > > > > 
> > > > > Auto-selection works fine if I specify a 'stateless' firmware, e.g. 
> > > > > amend
> > > > > the above config with
> > > > > 
> > > > >    <os firmware="efi">
> > > > >      <type arch="x86_64" machine="q35">hvm</type>
> > > > >      <loader stateless="yes"/>
> > > > >      <boot dev="hd"/>
> > > > >    </os>
> > > > > 
> > > > > Being unfamiliar with the firmware auto-selection code, I tried the 
> > > > > below
> > > > > naive hack, which only led to test failures and the subsequent 
> > > > > runtime error
> > > > > "unable to find any master var store for loader:
> > > > > /usr/share/qemu/ovmf-x86_64-sev.bin". Should auto-selection work with 
> > > > > the
> > > > > minimal config, or is it expected that user also specify a stateless
> > > > > firmware?
> > 
> > Andrea,
> > 
> > Having spent a fair bit of time in the firmware auto-selection code,
> > perhaps you have an opinion about this?
> 
> Sorry to keep nagging about this, but I still see the issue with latest git
> master using a json descriptor identical to the latest Fedora one. When
> omitting the 'stateless' attribute, autoselection fails with
> 
> operation failed: Unable to find 'efi' firmware that is compatible with the
> current configuration
> 
> With debug enabled, I can see the firmware is not even considered since it's
> not "split"
> 
> 2025-07-29 21:02:05.517+0000: 32187: debug : qemuFirmwareMatchDomain:1310 :
> Discarding loader without split flash
> 
> I would need to install Fedora and verify myself, but I'd be surprised if it
> didn't encounter the same issue. Without the 'stateless' attribute, the
> following test would fail
> 
> https://gitlab.com/libvirt/libvirt/-/blob/master/src/qemu/qemu_firmware.c?ref_type=heads#L1303
> 
> executing the else condition, and failing similarly since the firmware is not 
> split.

So I've tested the scenario I mentioned before, and in fact see the
same behaviour as you describe

error: operation failed: Unable to find 'efi' firmware that is compatible with 
the current configuration

which confuses me, because I'm sure I used virt-install to provision
SNP guests before, without expanding the args to

   --boot uefi,loader.stateless=on

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Reply via email to