]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tools: fix handling of CPU family/model/stepping in SEV validation
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 25 Aug 2023 08:32:25 +0000 (09:32 +0100)
committerDaniel P. Berrangé <berrange@redhat.com>
Tue, 29 Aug 2023 10:44:59 +0000 (11:44 +0100)
The SEV-ES boot measurement includes the initial CPU register state
(VMSA) and one of the fields includes the CPU identification. When
building a VMSA blob we get the CPU family/model/stepping from the
host capabilities, however, the VMSA must reflect the guest CPU not
host CPU. Thus using host capabilities is only when whe the guest
has the 'host-passthrough' CPU mode active. With 'host-model' it is
cannot be assumed host and guest match, because QEMU may not (yet)
have a named CPU model for a given host CPU.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
tools/virt-qemu-sev-validate

index 209f19a4a8e47b2a972489dc60f27cc3b20ceb65..c279741004d6583d564fa1fe7c514e2a85d7783e 100755 (executable)
@@ -1054,6 +1054,11 @@ class LibvirtConfidentialVM(ConfidentialVM):
                 raise InsecureUsageException(
                     "Using CPU SKU from capabilities is not secure")
 
+            mode = doc.xpath("/domain/cpu/@mode")
+            if mode != "host-passthrough":
+                raise UnsupportedUsageException(
+                    "Using CPU family/model/stepping from host not possible unless 'host-passthrough' is used")
+
             sig = capsdoc.xpath("/capabilities/host/cpu/signature")
             if len(sig) != 1:
                 raise UnsupportedUsageException(