]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Automatically add firmware type/features information
authorAndrea Bolognani <abologna@redhat.com>
Wed, 15 Mar 2023 16:53:02 +0000 (17:53 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Wed, 22 Mar 2023 12:49:53 +0000 (13:49 +0100)
Even when the user is not taking advantage of firmware
autoselection and instead manually providing all the necessary
information, in most cases they're still going to use firmware
builds that are provided by the OS vendor, are installed in
standard paths and come with a corresponding firmware
descriptor.

Similarly, even when the user is not guiding the autoselection
process by specifying the desired status of certain features
and instead is relying on the system-level descriptor priority
being set up correctly, libvirt will still ultimately decide to
use a specific descriptor, which includes information about the
firmware's features.

In both these cases, take the additional information that were
obtained from the firmware descriptor and reflect them back into
the domain XML, where they can be conveniently inspected by the
user and management applications alike.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
37 files changed:
src/qemu/qemu_firmware.c
tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw.aarch64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-loader-insecure.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-loader-path.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-loader-secure.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-no-enrolled-keys.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-no-secboot.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi-secboot.x86_64-latest.xml
tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml
tests/qemuxml2xmloutdata/pvpanic-pci-aarch64.aarch64-latest.xml
tests/qemuxml2xmloutdata/pvpanic-pci-no-address-aarch64.aarch64-latest.xml
tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml

index 21f947a0f54d357a73a54611a80b771d76b3d983..e70e607280d8cc71a529373b8e8b7a25bb89e36c 100644 (file)
@@ -1011,6 +1011,25 @@ qemuFirmwareOSInterfaceTypeFromOsDefFirmware(virDomainOsDefFirmware fw)
 }
 
 
+static virDomainOsDefFirmware
+qemuFirmwareOSInterfaceTypeToOsDefFirmware(qemuFirmwareOSInterface interface)
+{
+    switch (interface) {
+    case QEMU_FIRMWARE_OS_INTERFACE_BIOS:
+        return VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS;
+    case QEMU_FIRMWARE_OS_INTERFACE_UEFI:
+        return VIR_DOMAIN_OS_DEF_FIRMWARE_EFI;
+    case QEMU_FIRMWARE_OS_INTERFACE_UBOOT:
+    case QEMU_FIRMWARE_OS_INTERFACE_OPENFIRMWARE:
+    case QEMU_FIRMWARE_OS_INTERFACE_NONE:
+    case QEMU_FIRMWARE_OS_INTERFACE_LAST:
+        break;
+    }
+
+    return VIR_DOMAIN_OS_DEF_FIRMWARE_NONE;
+}
+
+
 static qemuFirmwareOSInterface
 qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type)
 {
@@ -1071,6 +1090,46 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def,
 }
 
 
+
+/**
+ * qemuFirmwareSetOsFeatures:
+ * @def: domain definition
+ * @secureBoot: whether the 'secure-boot' feature is enabled
+ * @enrolledKeys: whether the 'enrolled-keys' feature is enabled
+ *
+ * Set firmware features for @def to match those declared by the JSON
+ * descriptor that was found to match autoselection requirements.
+ */
+static void
+qemuFirmwareSetOsFeatures(virDomainDef *def,
+                          bool secureBoot,
+                          bool enrolledKeys)
+{
+    int *features = def->os.firmwareFeatures;
+    virDomainLoaderDef *loader = def->os.loader;
+
+    if (!features) {
+        features = g_new0(int, VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST);
+        def->os.firmwareFeatures = features;
+    }
+
+    features[VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_SECURE_BOOT] = virTristateBoolFromBool(secureBoot);
+    features[VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_ENROLLED_KEYS] = virTristateBoolFromBool(enrolledKeys);
+
+    /* If the NVRAM template is blank at this point and we're not dealing
+     * with a stateless firmware image, then it means that the NVRAM file
+     * is not local. In this scenario we can't really make any assumptions
+     * about its contents, so it's preferable to leave the state of the
+     * enrolled-keys feature unspecified */
+    if (loader &&
+        loader->type == VIR_DOMAIN_LOADER_TYPE_PFLASH &&
+        loader->stateless != VIR_TRISTATE_BOOL_YES &&
+        !loader->nvramTemplate) {
+        features[VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_ENROLLED_KEYS] = VIR_TRISTATE_BOOL_ABSENT;
+    }
+}
+
+
 #define VIR_QEMU_FIRMWARE_AMD_SEV_ES_POLICY (1 << 2)
 
 
@@ -1294,6 +1353,8 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg,
     const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory;
     virDomainLoaderDef *loader = NULL;
     virStorageFileFormat format;
+    bool hasSecureBoot = false;
+    bool hasEnrolledKeys = false;
     size_t i;
 
     switch (fw->mapping.device) {
@@ -1368,20 +1429,39 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg,
             def->os.loader->secure = VIR_TRISTATE_BOOL_YES;
             break;
 
-        case QEMU_FIRMWARE_FEATURE_NONE:
+        case QEMU_FIRMWARE_FEATURE_SECURE_BOOT:
+            hasSecureBoot = true;
+            break;
+
+        case QEMU_FIRMWARE_FEATURE_ENROLLED_KEYS:
+            hasEnrolledKeys = true;
+            break;
+
         case QEMU_FIRMWARE_FEATURE_ACPI_S3:
         case QEMU_FIRMWARE_FEATURE_ACPI_S4:
         case QEMU_FIRMWARE_FEATURE_AMD_SEV:
         case QEMU_FIRMWARE_FEATURE_AMD_SEV_ES:
-        case QEMU_FIRMWARE_FEATURE_ENROLLED_KEYS:
-        case QEMU_FIRMWARE_FEATURE_SECURE_BOOT:
         case QEMU_FIRMWARE_FEATURE_VERBOSE_DYNAMIC:
         case QEMU_FIRMWARE_FEATURE_VERBOSE_STATIC:
+        case QEMU_FIRMWARE_FEATURE_NONE:
         case QEMU_FIRMWARE_FEATURE_LAST:
             break;
         }
     }
 
+    if (!def->os.firmware) {
+        /* If a firmware type for autoselection was not already present,
+         * pick the first reasonable one from the descriptor list */
+        for (i = 0; i < fw->ninterfaces; i++) {
+            def->os.firmware = qemuFirmwareOSInterfaceTypeToOsDefFirmware(fw->interfaces[i]);
+            if (def->os.firmware)
+                break;
+        }
+    }
+    if (def->os.firmware) {
+        qemuFirmwareSetOsFeatures(def, hasSecureBoot, hasEnrolledKeys);
+    }
+
     return 0;
 }
 
index d1ecd8593fa81b5ec54d391586eef9cd8361bcd6..e69f8c01d0e0a029a343d5f68fb144eb311af450 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='bios'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader type='rom' stateless='yes'>/usr/share/seabios/bios-256k.bin</loader>
     <boot dev='hd'/>
   </os>
index 68e14d3e4b09239d53641c653da1b4273f7f3dcb..ffff5a79e285e70f44fd31c587ebfc89ce92fa9b 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='bios'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader type='rom'>/usr/share/seabios/bios-256k.bin</loader>
     <boot dev='hd'/>
   </os>
index 6da924793b1ad4f9f430e3e1dde4c1f285e8d00e..5779eca7a045bb4ad551fb3e62e68e8836486474 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='aarch64' machine='virt-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index 9f0f3509f28df29a7818677987ebdeec699c3a32..310ee6ec73fd8d2874b0040ea79cbe76d1dbb197 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index 8ab29edf4243f44fa4c72bac00850bef317a9eea..8eb6086e407f950e7066a7f32f01ede39431beb4 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='aarch64' machine='virt-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 42b044d83fbd59c423689930a10c4519da724fc1..7ea870bbcdff1cd46d1c2a3b5bf583d8d4856aed 100644 (file)
@@ -6,6 +6,9 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader>
     <nvram type='network' format='qcow2'>
       <source protocol='nbd' name='bar'>
index 6b53262dc7d661de6728f42e825bd017b8a96621..6cf33b0c76bbbbb442cff44088dfe8743f8a52e5 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/path/to/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index 9f0f3509f28df29a7818677987ebdeec699c3a32..310ee6ec73fd8d2874b0040ea79cbe76d1dbb197 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index 55da8ee12f494fba6b1fe13c75825f48f9ec502e..7717677c4b01ea9a6804dda64a082f34dd9068f1 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='no' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 3977ddc0c7b14c4cd8d13ac760babe94cbee1f11..6f4bf4b5bbb014ffc5009b25217643312481e623 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 1b1b9352c1ac2be5a389c845b3cddd2dfcb72b48..90c5040ca684b6a4e468f8339af9f6cf70fa2c98 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 78b3b81506fce6eda3bff88085e52a792f97e407..e5caf31c4eb45d86cc77e5fa2fa2d39b452760cb 100644 (file)
@@ -8,6 +8,7 @@
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
     <firmware>
       <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
     </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
index 57e63a079cadceb94cf34a8bcb47eaf57ee276d6..6f4bf4b5bbb014ffc5009b25217643312481e623 100644 (file)
@@ -7,6 +7,7 @@
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
     <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
       <feature enabled='no' name='secure-boot'/>
     </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
index 8117f02f15b0149cbbdc77e6058658bb7173c6e4..1418ddbfcd52f801ec384b94461f150fe4dbcb77 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd' type='file'>
       <source file='/path/to/guest_VARS.fd'/>
index d3ef57f6828793ec693ccd7bac713c854eb0b6c7..ec672780bb05c9da933dada25a01bbe80bd04621 100644 (file)
@@ -6,6 +6,9 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram type='network'>
       <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'>
index 6d0d112dd15b945a4fc24ae5bf028aa4f26c9bac..3f59dc4d6120bbc81e1b67470e9d1eac032f778a 100644 (file)
@@ -6,6 +6,9 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram type='network'>
       <source protocol='nbd' name='bar'>
index d293cd3371a779d2deb7616aeaee3e48930174cb..b7dc8fa140386dbcd5fb954f332c02a0292ece76 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 6dcc5ea88d4e5b697593a406b18567583b721927..90c5040ca684b6a4e468f8339af9f6cf70fa2c98 100644 (file)
@@ -7,6 +7,7 @@
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
     <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
       <feature enabled='yes' name='secure-boot'/>
     </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
index 40d8b8815bb4e3c2839325f3e4782503168ec4bd..4ab4d9587c3aee9a6a02676b0a8c7b22e291ad45 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 7939dc666b2a9aa480b99c6a21e1e189cace6480..b1aa817a560cc90925184c70d82ad48a848ff049 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' stateless='yes'>/usr/share/OVMF/OVMF.sev.fd</loader>
     <boot dev='hd'/>
   </os>
index 1b1b9352c1ac2be5a389c845b3cddd2dfcb72b48..90c5040ca684b6a4e468f8339af9f6cf70fa2c98 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 34257e4f80fd6679f194adaff9c401f8858f379d..318ffdf93cbd3b561458c51cab63b90e3606ae57 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='aarch64' machine='virt-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index ff7793a377ccd74e9f58f7894ddf08e5d5dc964f..ac58a278f945a71b9fc0e373c65d8634af346e35 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index aa90d3e2f2364d1fa2240cfe8dec71793562ceff..69b6d91e992144a4d9a90a7daf5e30d54d0be5c0 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 4caa7950ce2acfbcf7cdde9c7858232e4329ba64..2e287b8cd1e0d54c76d19f4370395b08a56cdc79 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index ff7793a377ccd74e9f58f7894ddf08e5d5dc964f..ac58a278f945a71b9fc0e373c65d8634af346e35 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 1f642cd1793cfee2c675a29aff9f497e83b8dba5..2b4dff8800bb15c0b89e9ac773887d87ccf07fe8 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='aarch64' machine='virt-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index cdb5d2b31a91033f4a40ed017784b14e52aa1acc..1418ddbfcd52f801ec384b94461f150fe4dbcb77 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd' type='file'>
       <source file='/path/to/guest_VARS.fd'/>
index 5a2e8715a01db920696cd265537c1553e36b26a1..ec672780bb05c9da933dada25a01bbe80bd04621 100644 (file)
@@ -4,8 +4,11 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram type='network'>
       <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'>
index 208257bb5b33de1478d9a784cf2eef1d7fdcfff2..3f59dc4d6120bbc81e1b67470e9d1eac032f778a 100644 (file)
@@ -4,8 +4,11 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram type='network'>
       <source protocol='nbd' name='bar'>
index 3b79af418a6a80a4a8df7036c203cd0925ccdd4b..dc4b8bb97f96e8dc97ced7933068c5695e7a1b2c 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index aa90d3e2f2364d1fa2240cfe8dec71793562ceff..69b6d91e992144a4d9a90a7daf5e30d54d0be5c0 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-q35-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='yes' name='enrolled-keys'/>
+      <feature enabled='yes' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index ff6460d7b03223326835a97c54e9b13b12eb2dd2..11d7623e7ca536670d28a9d1ba4b2046193d8e95 100644 (file)
@@ -4,8 +4,12 @@
   <memory unit='KiB'>1048576</memory>
   <currentMemory unit='KiB'>1048576</currentMemory>
   <vcpu placement='static'>1</vcpu>
-  <os>
+  <os firmware='efi'>
     <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
     <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram>
     <boot dev='hd'/>
index 50321aedd6d49f0e96e286e38b0f56a84024eb38..2a83ace7487f8f4398107e5c61f95d0dd7d1ea8e 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='aarch64' machine='virt-6.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index 9a25573614f99f40e1091aaa6a8cf6a4eb70d9f2..d5ed9b23febbfa9032156542dd99b4b8889fd759 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='aarch64' machine='virt-6.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>
index d560259d87c06a66102c9b61ff6e07c946b60ba8..589295e602e2896662520599f9181693e8d18d52 100644 (file)
@@ -6,6 +6,10 @@
   <vcpu placement='static'>1</vcpu>
   <os firmware='efi'>
     <type arch='aarch64' machine='virt-6.0'>hvm</type>
+    <firmware>
+      <feature enabled='no' name='enrolled-keys'/>
+      <feature enabled='no' name='secure-boot'/>
+    </firmware>
     <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader>
     <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram>
     <boot dev='hd'/>