[libvirt PATCH v2 11/12] qemu: probe for sev-guest.kernel-hashes property

Daniel P. Berrangé berrange at redhat.com
Fri Dec 10 11:37:34 UTC 2021


This sev-guest object property indicates whether QEMU should
expose the kernel, ramdisk, cmdline hashes to the firmware
for measurement.

The 6.2.0 capabilities are hacked to look as if they were
generated with sev-guest support.

Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
---
 src/qemu/qemu_capabilities.c                  |   8 ++
 src/qemu/qemu_capabilities.h                  |   1 +
 .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |   7 +-
 .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |   7 +-
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |   7 +-
 .../caps_2.12.0.x86_64.replies                |  97 ++++++++++++----
 .../caps_3.0.0.x86_64.replies                 |  97 ++++++++++++----
 .../caps_3.1.0.x86_64.replies                 |  97 ++++++++++++----
 .../caps_4.0.0.x86_64.replies                 |  97 ++++++++++++----
 .../caps_4.1.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_4.2.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_5.0.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_5.1.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_5.2.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_6.0.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_6.1.0.x86_64.replies                 |  89 ++++++++++----
 .../caps_6.2.0.x86_64.replies                 | 109 ++++++++++++++----
 .../caps_6.2.0.x86_64.xml                     |   8 ++
 18 files changed, 895 insertions(+), 263 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 456ce1b72e..fbcb67713e 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -652,6 +652,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
               "device.json", /* QEMU_CAPS_DEVICE_JSON */
               "query-dirty-rate", /* QEMU_CAPS_QUERY_DIRTY_RATE */
               "rbd-encryption", /* QEMU_CAPS_RBD_ENCRYPTION */
+              "sev-guest-kernel-hashes", /* QEMU_CAPS_SEV_GUEST_KERNEL_HASHES */
     );
 
 
@@ -1718,6 +1719,10 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMaxCPU[] = {
     { "migratable", QEMU_CAPS_CPU_MIGRATABLE },
 };
 
+static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsSEVGuest[] = {
+    { "kernel-hashes", QEMU_CAPS_SEV_GUEST_KERNEL_HASHES },
+};
+
 static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
     { "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile,
       G_N_ELEMENTS(virQEMUCapsObjectPropsMemoryBackendFile),
@@ -1731,6 +1736,9 @@ static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
     { "max-arm-cpu", virQEMUCapsObjectPropsMaxCPU,
       G_N_ELEMENTS(virQEMUCapsObjectPropsMaxCPU),
       QEMU_CAPS_ARM_MAX_CPU },
+    { "sev-guest", virQEMUCapsObjectPropsSEVGuest,
+      G_N_ELEMENTS(virQEMUCapsObjectPropsSEVGuest),
+      QEMU_CAPS_SEV_GUEST },
 };
 
 static struct virQEMUCapsStringFlags virQEMUCapsMachinePropsPSeries[] = {
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 716e09123c..aaac20a834 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -631,6 +631,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
     QEMU_CAPS_DEVICE_JSON, /* -device accepts JSON */
     QEMU_CAPS_QUERY_DIRTY_RATE, /* accepts query-dirty-rate */
     QEMU_CAPS_RBD_ENCRYPTION, /* Ceph RBD encryption support */
+    QEMU_CAPS_SEV_GUEST_KERNEL_HASHES, /* sev-guest.kernel-hashes= */
 
     QEMU_CAPS_LAST /* this must always be the last item */
 } virQEMUCapsFlags;
diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
index 9d68c0a404..28d4f38fef 100644
--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
@@ -225,6 +225,11 @@
     <genid supported='yes'/>
     <backingStoreInput supported='yes'/>
     <backup supported='yes'/>
-    <sev supported='no'/>
+    <sev supported='yes'>
+      <cbitpos>47</cbitpos>
+      <reducedPhysBits>1</reducedPhysBits>
+      <maxGuests>15</maxGuests>
+      <maxESGuests>0</maxESGuests>
+    </sev>
   </features>
 </domainCapabilities>
diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
index 8db840faac..711a77ccd1 100644
--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
@@ -231,6 +231,11 @@
     <genid supported='yes'/>
     <backingStoreInput supported='yes'/>
     <backup supported='yes'/>
-    <sev supported='no'/>
+    <sev supported='yes'>
+      <cbitpos>47</cbitpos>
+      <reducedPhysBits>1</reducedPhysBits>
+      <maxGuests>15</maxGuests>
+      <maxESGuests>0</maxESGuests>
+    </sev>
   </features>
 </domainCapabilities>
diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
index 0f89790b60..b0fb1e11cd 100644
--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
@@ -225,6 +225,11 @@
     <genid supported='yes'/>
     <backingStoreInput supported='yes'/>
     <backup supported='yes'/>
-    <sev supported='no'/>
+    <sev supported='yes'>
+      <cbitpos>47</cbitpos>
+      <reducedPhysBits>1</reducedPhysBits>
+      <maxGuests>15</maxGuests>
+      <maxESGuests>0</maxESGuests>
+    </sev>
   </features>
 </domainCapabilities>
diff --git a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
index 5fefbc64ab..c5bdd5398b 100644
--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
@@ -17361,10 +17361,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-40"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-40"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-41"
+}
+
 {
   "return": [
     {
@@ -17561,7 +17610,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-40"
+  "id": "libvirt-41"
 }
 
 {
@@ -17569,7 +17618,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -17674,12 +17723,12 @@
       "type": "string"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -18193,12 +18242,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -18206,12 +18255,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -18219,12 +18268,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -19511,12 +19560,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -19578,12 +19627,12 @@
       "capability": "dirty-bitmaps"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -19593,7 +19642,7 @@
     "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
     "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
   },
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -19604,7 +19653,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -19794,7 +19843,7 @@
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -19986,7 +20035,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -20241,7 +20290,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -20255,7 +20304,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -20445,7 +20494,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -20637,7 +20686,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
@@ -20892,7 +20941,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
index a63d1d8118..bc1ff6527d 100644
--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
@@ -18035,10 +18035,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
+  "id": "libvirt-40"
+}
+
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
   "id": "libvirt-40"
 }
 
+{
+  "execute": "query-machines",
+  "id": "libvirt-41"
+}
+
 {
   "return": [
     {
@@ -18245,7 +18294,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-40"
+  "id": "libvirt-41"
 }
 
 {
@@ -18253,7 +18302,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -18358,12 +18407,12 @@
       "type": "string"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -18800,12 +18849,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -18813,12 +18862,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -18826,12 +18875,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -20130,12 +20179,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -20205,16 +20254,16 @@
       "capability": "late-block-activate"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
-  "id": "libvirt-47",
+  "id": "libvirt-48",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -20229,7 +20278,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -20422,7 +20471,7 @@
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -20617,7 +20666,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -20880,7 +20929,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -20894,7 +20943,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -21087,7 +21136,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -21282,7 +21331,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
@@ -21545,7 +21594,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
index d021745a06..8bec154b10 100644
--- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
@@ -18452,10 +18452,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
+  "id": "libvirt-40"
+}
+
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
   "id": "libvirt-40"
 }
 
+{
+  "execute": "query-machines",
+  "id": "libvirt-41"
+}
+
 {
   "return": [
     {
@@ -18672,7 +18721,7 @@
       "cpu-max": 255
     }
   ],
-  "id": "libvirt-40"
+  "id": "libvirt-41"
 }
 
 {
@@ -18680,7 +18729,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -18785,12 +18834,12 @@
       "type": "int"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -19309,12 +19358,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -19322,12 +19371,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -19335,12 +19384,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -20614,12 +20663,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -20689,16 +20738,16 @@
       "capability": "late-block-activate"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
-  "id": "libvirt-47",
+  "id": "libvirt-48",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -20713,7 +20762,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -20915,7 +20964,7 @@
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -21119,7 +21168,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -21394,7 +21443,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -21408,7 +21457,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -21610,7 +21659,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -21814,7 +21863,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
@@ -22089,7 +22138,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
index 5de9457eed..8a44f5e24a 100644
--- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
@@ -18981,10 +18981,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
+  "id": "libvirt-40"
+}
+
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
   "id": "libvirt-40"
 }
 
+{
+  "execute": "query-machines",
+  "id": "libvirt-41"
+}
+
 {
   "return": [
     {
@@ -19201,7 +19250,7 @@
       "alias": "q35"
     }
   ],
-  "id": "libvirt-40"
+  "id": "libvirt-41"
 }
 
 {
@@ -19209,7 +19258,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -19314,12 +19363,12 @@
       "type": "bool"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -19836,12 +19885,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -19849,12 +19898,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -19862,12 +19911,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -21149,12 +21198,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -21228,16 +21277,16 @@
       "capability": "x-ignore-shared"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
-  "id": "libvirt-47",
+  "id": "libvirt-48",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -21252,7 +21301,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -21456,7 +21505,7 @@
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -21662,7 +21711,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -21941,7 +21990,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -21955,7 +22004,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -22159,7 +22208,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -22365,7 +22414,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
@@ -22644,7 +22693,7 @@
       }
     }
   },
-  "id": "libvirt-51"
+  "id": "libvirt-52"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
index 0dadabf948..7d5ef93f16 100644
--- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.replies
@@ -19441,10 +19441,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-40"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-40"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-41"
+}
+
 {
   "return": [
     {
@@ -19766,7 +19815,7 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-40"
+  "id": "libvirt-41"
 }
 
 {
@@ -19774,7 +19823,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -19879,12 +19928,12 @@
       "type": "bool"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -21029,12 +21078,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -21042,12 +21091,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -21055,12 +21104,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -22334,12 +22383,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -22413,16 +22462,16 @@
       "capability": "x-ignore-shared"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
-  "id": "libvirt-47",
+  "id": "libvirt-48",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -22437,7 +22486,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -22645,7 +22694,7 @@
       }
     }
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -22659,7 +22708,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -22867,7 +22916,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies
index cd7a5c345c..e7aae333ec 100644
--- a/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_4.2.0.x86_64.replies
@@ -20483,10 +20483,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -20876,7 +20925,7 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -20884,7 +20933,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -20989,12 +21038,12 @@
       "type": "bool"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -22377,12 +22426,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -22390,12 +22439,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -22403,12 +22452,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -23694,12 +23743,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -23777,16 +23826,16 @@
       "capability": "validate-uuid"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
+  "id": "libvirt-49",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -23801,7 +23850,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -24103,7 +24152,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -24117,7 +24166,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -24419,7 +24468,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies
index ad6ee05ba6..7657e7047d 100644
--- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.replies
@@ -21808,10 +21808,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -22185,7 +22234,7 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -22193,7 +22242,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -22283,12 +22332,12 @@
       "type": "string"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -23833,12 +23882,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -23846,12 +23895,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -23859,12 +23908,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -25140,12 +25189,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -25223,16 +25272,16 @@
       "capability": "validate-uuid"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
+  "id": "libvirt-49",
   "error": {
     "class": "GenericError",
     "desc": "SEV feature is not available"
@@ -25247,7 +25296,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -25550,7 +25599,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -25564,7 +25613,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -25867,7 +25916,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies
index b8f3c79026..82f6de7e7e 100644
--- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.replies
@@ -22375,10 +22375,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -22768,7 +22817,7 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -22776,7 +22825,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -22866,12 +22915,12 @@
       "type": "string"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -24573,12 +24622,12 @@
       "migration-safe": true
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -24586,12 +24635,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -24599,12 +24648,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -25899,12 +25948,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -25982,16 +26031,16 @@
       "capability": "validate-uuid"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
+  "id": "libvirt-49",
   "error": {
     "class": "GenericError",
     "desc": "SEV is not enabled in KVM"
@@ -26006,7 +26055,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -26314,7 +26363,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -26328,7 +26377,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -26636,7 +26685,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies
index 54d8db5904..89f0270e27 100644
--- a/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_5.2.0.x86_64.replies
@@ -22982,10 +22982,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -23441,7 +23490,7 @@
       "default-ram-id": "pc.ram"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -23449,7 +23498,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -23534,12 +23583,12 @@
       "type": "string"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -25364,12 +25413,12 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -25377,12 +25426,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -25390,12 +25439,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -26690,12 +26739,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -26773,16 +26822,16 @@
       "capability": "validate-uuid"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
+  "id": "libvirt-49",
   "error": {
     "class": "GenericError",
     "desc": "SEV is not enabled in KVM"
@@ -26797,7 +26846,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -27106,7 +27155,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -27120,7 +27169,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -27429,7 +27478,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies
index 986bb56630..6cda5538a5 100644
--- a/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_6.0.0.x86_64.replies
@@ -24796,10 +24796,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -25244,7 +25293,7 @@
       "default-ram-id": "pc.ram"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -25252,7 +25301,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -25350,12 +25399,12 @@
       "type": "child<container>"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -27223,12 +27272,12 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -27236,12 +27285,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -27249,12 +27298,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -28573,12 +28622,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -28660,12 +28709,12 @@
       "capability": "background-snapshot"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -28675,7 +28724,7 @@
     "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
     "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
   },
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
@@ -28686,7 +28735,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -29007,7 +29056,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -29021,7 +29070,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -29342,7 +29391,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies
index 92feb723e6..694f0c64b2 100644
--- a/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_6.1.0.x86_64.replies
@@ -25060,10 +25060,59 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -25526,7 +25575,7 @@
       "default-ram-id": "pc.ram"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -25534,7 +25583,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -25637,12 +25686,12 @@
       "type": "child<container>"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -27699,12 +27748,12 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -27712,12 +27761,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -27725,12 +27774,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -29062,12 +29111,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -29149,16 +29198,16 @@
       "capability": "background-snapshot"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
+  "id": "libvirt-49",
   "error": {
     "class": "GenericError",
     "desc": "Failed to open /dev/sev: No such file or directory"
@@ -29173,7 +29222,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -29496,7 +29545,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -29510,7 +29559,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -29833,7 +29882,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies
index 69d3b1b12a..71f325f921 100644
--- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies
+++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.replies
@@ -13315,6 +13315,11 @@
         {
           "name": "reduced-phys-bits",
           "type": "int"
+        },
+        {
+          "name": "kernel-hashes",
+          "default": null,
+          "type": "bool"
         }
       ],
       "meta-type": "object"
@@ -28022,10 +28027,64 @@
 }
 
 {
-  "execute": "query-machines",
+  "execute": "qom-list-properties",
+  "arguments": {
+    "typename": "sev-guest"
+  },
   "id": "libvirt-41"
 }
 
+{
+  "return": [
+    {
+      "name": "type",
+      "type": "string"
+    },
+    {
+      "name": "dh-cert-file",
+      "description": "guest owners DH certificate (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "sev-device",
+      "description": "SEV device to use",
+      "type": "string"
+    },
+    {
+      "name": "session-file",
+      "description": "guest owners session parameters (encoded with base64)",
+      "type": "string"
+    },
+    {
+      "name": "kernel-hashes",
+      "description": "add kernel hashes to guest firmware for measured Linux boot",
+      "type": "bool"
+    },
+    {
+      "name": "handle",
+      "type": "uint32"
+    },
+    {
+      "name": "policy",
+      "type": "uint32"
+    },
+    {
+      "name": "reduced-phys-bits",
+      "type": "uint32"
+    },
+    {
+      "name": "cbitpos",
+      "type": "uint32"
+    }
+  ],
+  "id": "libvirt-41"
+}
+
+{
+  "execute": "query-machines",
+  "id": "libvirt-42"
+}
+
 {
   "return": [
     {
@@ -28506,7 +28565,7 @@
       "default-ram-id": "pc.ram"
     }
   ],
-  "id": "libvirt-41"
+  "id": "libvirt-42"
 }
 
 {
@@ -28514,7 +28573,7 @@
   "arguments": {
     "typename": "none-machine"
   },
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
@@ -28617,12 +28676,12 @@
       "type": "child<container>"
     }
   ],
-  "id": "libvirt-42"
+  "id": "libvirt-43"
 }
 
 {
   "execute": "query-cpu-definitions",
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
@@ -30692,12 +30751,12 @@
       "deprecated": false
     }
   ],
-  "id": "libvirt-43"
+  "id": "libvirt-44"
 }
 
 {
   "execute": "query-tpm-models",
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
@@ -30705,12 +30764,12 @@
     "tpm-crb",
     "tpm-tis"
   ],
-  "id": "libvirt-44"
+  "id": "libvirt-45"
 }
 
 {
   "execute": "query-tpm-types",
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
@@ -30718,12 +30777,12 @@
     "passthrough",
     "emulator"
   ],
-  "id": "libvirt-45"
+  "id": "libvirt-46"
 }
 
 {
   "execute": "query-command-line-options",
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
@@ -32055,12 +32114,12 @@
       "option": "drive"
     }
   ],
-  "id": "libvirt-46"
+  "id": "libvirt-47"
 }
 
 {
   "execute": "query-migrate-capabilities",
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
@@ -32142,20 +32201,22 @@
       "capability": "background-snapshot"
     }
   ],
-  "id": "libvirt-47"
+  "id": "libvirt-48"
 }
 
 {
   "execute": "query-sev-capabilities",
-  "id": "libvirt-48"
+  "id": "libvirt-49"
 }
 
 {
-  "id": "libvirt-48",
-  "error": {
-    "class": "GenericError",
-    "desc": "SEV: Failed to open /dev/sev: No such file or directory"
-  }
+  "return": {
+    "reduced-phys-bits": 1,
+    "cbitpos": 47,
+    "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
+    "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
+  },
+  "id": "libvirt-49"
 }
 
 {
@@ -32166,7 +32227,7 @@
       "name": "host"
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -32499,7 +32560,7 @@
       }
     }
   },
-  "id": "libvirt-49"
+  "id": "libvirt-50"
 }
 
 {
@@ -32513,7 +32574,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
@@ -32846,7 +32907,7 @@
       }
     }
   },
-  "id": "libvirt-50"
+  "id": "libvirt-51"
 }
 
 {
diff --git a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml
index 39179916c5..73ab031931 100644
--- a/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_6.2.0.x86_64.xml
@@ -154,6 +154,7 @@
   <flag name='tpm-emulator'/>
   <flag name='mch'/>
   <flag name='mch.extended-tseg-mbytes'/>
+  <flag name='sev-guest'/>
   <flag name='usb-storage.werror'/>
   <flag name='egl-headless'/>
   <flag name='vfio-pci.display'/>
@@ -240,6 +241,7 @@
   <flag name='device.json'/>
   <flag name='query-dirty-rate'/>
   <flag name='rbd-encryption'/>
+  <flag name='sev-guest-kernel-hashes'/>
   <version>6001050</version>
   <kvmVersion>0</kvmVersion>
   <microcodeVersion>43100244</microcodeVersion>
@@ -3710,4 +3712,10 @@
   <machine type='tcg' name='pc-q35-2.5' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/>
   <machine type='tcg' name='pc-i440fx-3.0' hotplugCpus='yes' maxCpus='255' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/>
   <machine type='tcg' name='pc-q35-2.11' hotplugCpus='yes' maxCpus='288' defaultCPU='qemu64-x86_64-cpu' numaMemSupported='yes' defaultRAMid='pc.ram'/>
+  <sev>
+    <cbitpos>47</cbitpos>
+    <reducedPhysBits>1</reducedPhysBits>
+    <pdh>AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA</pdh>
+    <certChain>AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA</certChain>
+  </sev>
 </qemuCaps>
-- 
2.33.1




More information about the libvir-list mailing list