[libvirt] [PATCH v2 04/22] qemu: Parse unavailable features for CPU models

Jiri Denemark jdenemar at redhat.com
Fri Oct 13 18:14:36 UTC 2017


query-cpu-definitions QMP command returns a list of unavailable features
which prevent CPU models from being usable on the current host. So far
we only checked whether the list was empty to mark CPU models as
(un)usable. This patch parses all unavailable features for each CPU
model and stores them in virDomainCapsCPUModel as a list of usability
blockers.

Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
Reviewed-by: John Ferlan <jferlan at redhat.com>
---

Notes:
    Version 2:
    - simplified parsing of CPU usability blockers in
      qemuMonitorJSONGetCPUDefinitions

 src/qemu/qemu_capabilities.c                      |    2 +-
 src/qemu/qemu_monitor.c                           |    2 +
 src/qemu/qemu_monitor.h                           |    1 +
 src/qemu/qemu_monitor_json.c                      |   28 +-
 tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml  | 1102 +++++++++++++++++++--
 tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml |  236 ++++-
 tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml  |  154 ++-
 tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml  |  154 ++-
 8 files changed, 1556 insertions(+), 123 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 507c7651a1..5b532b247c 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3008,7 +3008,7 @@ virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
             usable = VIR_DOMCAPS_CPU_USABLE_NO;
 
         if (virDomainCapsCPUModelsAddSteal(models, &cpus[i]->name, usable,
-                                           NULL) < 0)
+                                           &cpus[i]->blockers) < 0)
             goto cleanup;
     }
 
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 7a26785878..aac318f787 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -3736,6 +3736,8 @@ qemuMonitorCPUDefInfoFree(qemuMonitorCPUDefInfoPtr cpu)
 {
     if (!cpu)
         return;
+
+    virStringListFree(cpu->blockers);
     VIR_FREE(cpu->name);
     VIR_FREE(cpu);
 }
diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
index 1647b46972..40d90d0da6 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -973,6 +973,7 @@ typedef qemuMonitorCPUDefInfo *qemuMonitorCPUDefInfoPtr;
 struct _qemuMonitorCPUDefInfo {
     virTristateBool usable;
     char *name;
+    char **blockers; /* NULL-terminated string list */
 };
 
 int qemuMonitorGetCPUDefinitions(qemuMonitorPtr mon,
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index e591e85073..5546d1aa1f 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -5078,6 +5078,8 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
 
         if (virJSONValueObjectHasKey(child, "unavailable-features")) {
             virJSONValuePtr blockers;
+            size_t j;
+            int len;
 
             blockers = virJSONValueObjectGetArray(child,
                                                   "unavailable-features");
@@ -5088,10 +5090,30 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
                 goto cleanup;
             }
 
-            if (virJSONValueArraySize(blockers) > 0)
-                cpu->usable = VIR_TRISTATE_BOOL_NO;
-            else
+            len = virJSONValueArraySize(blockers);
+
+            if (len == 0) {
                 cpu->usable = VIR_TRISTATE_BOOL_YES;
+                continue;
+            }
+
+            cpu->usable = VIR_TRISTATE_BOOL_NO;
+            if (VIR_ALLOC_N(cpu->blockers, len + 1) < 0)
+                goto cleanup;
+
+            for (j = 0; j < len; j++) {
+                virJSONValuePtr blocker = virJSONValueArrayGet(blockers, j);
+
+                if (blocker->type != VIR_JSON_TYPE_STRING) {
+                    virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                                   _("unexpected value in unavailable-features "
+                                     "array"));
+                    goto cleanup;
+                }
+
+                if (VIR_STRDUP(cpu->blockers[j], virJSONValueGetString(blocker)) < 0)
+                    goto cleanup;
+            }
         }
     }
 
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
index 2546ebdd9d..7e44652feb 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
@@ -242,72 +242,1050 @@
   <cpu type='kvm' name='z196-base' usable='yes'/>
   <cpu type='kvm' name='z13-base' usable='yes'/>
   <cpu type='kvm' name='z890' usable='yes'/>
-  <cpu type='tcg' name='z10EC-base' usable='no'/>
-  <cpu type='tcg' name='z9EC-base' usable='no'/>
-  <cpu type='tcg' name='z196.2-base' usable='no'/>
+  <cpu type='tcg' name='z10EC-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9EC-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z196.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
   <cpu type='tcg' name='z900-base' usable='yes'/>
-  <cpu type='tcg' name='z990' usable='no'/>
-  <cpu type='tcg' name='z900.2-base' usable='no'/>
+  <cpu type='tcg' name='z990' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z900.2-base' usable='no'>
+    <blocker name='type'/>
+  </cpu>
   <cpu type='tcg' name='host'/>
-  <cpu type='tcg' name='z900.3' usable='no'/>
-  <cpu type='tcg' name='z114' usable='no'/>
-  <cpu type='tcg' name='z890-base' usable='no'/>
-  <cpu type='tcg' name='z13.2-base' usable='no'/>
-  <cpu type='tcg' name='zEC12.2' usable='no'/>
-  <cpu type='tcg' name='z10BC' usable='no'/>
-  <cpu type='tcg' name='z900.2' usable='no'/>
-  <cpu type='tcg' name='z10BC.2' usable='no'/>
-  <cpu type='tcg' name='z196' usable='no'/>
-  <cpu type='tcg' name='z9EC' usable='no'/>
-  <cpu type='tcg' name='z990-base' usable='no'/>
-  <cpu type='tcg' name='z10EC.3' usable='no'/>
+  <cpu type='tcg' name='z900.3' usable='no'>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z114' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='dfppc'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zEC12.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10BC' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z900.2' usable='no'>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10BC.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z196' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9EC' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10EC.3' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
   <cpu type='tcg' name='z900' usable='yes'/>
-  <cpu type='tcg' name='z9EC.3-base' usable='no'/>
-  <cpu type='tcg' name='z990.5-base' usable='no'/>
-  <cpu type='tcg' name='z10EC.2' usable='no'/>
-  <cpu type='tcg' name='z9BC.2' usable='no'/>
-  <cpu type='tcg' name='z10EC' usable='no'/>
-  <cpu type='tcg' name='z990.3-base' usable='no'/>
-  <cpu type='tcg' name='z14' usable='no'/>
-  <cpu type='tcg' name='z13s' usable='no'/>
-  <cpu type='tcg' name='z10EC.3-base' usable='no'/>
-  <cpu type='tcg' name='zEC12.2-base' usable='no'/>
-  <cpu type='tcg' name='z890.3-base' usable='no'/>
-  <cpu type='tcg' name='z9EC.3' usable='no'/>
-  <cpu type='tcg' name='z990.5' usable='no'/>
-  <cpu type='tcg' name='z13' usable='no'/>
-  <cpu type='tcg' name='z13s-base' usable='no'/>
-  <cpu type='tcg' name='z14-base' usable='no'/>
-  <cpu type='tcg' name='z9EC.2' usable='no'/>
-  <cpu type='tcg' name='z990.4' usable='no'/>
-  <cpu type='tcg' name='zEC12-base' usable='no'/>
-  <cpu type='tcg' name='z9EC.2-base' usable='no'/>
-  <cpu type='tcg' name='zBC12' usable='no'/>
-  <cpu type='tcg' name='z196.2' usable='no'/>
-  <cpu type='tcg' name='z990.3' usable='no'/>
-  <cpu type='tcg' name='z990.2-base' usable='no'/>
-  <cpu type='tcg' name='z900.3-base' usable='no'/>
-  <cpu type='tcg' name='z890.3' usable='no'/>
-  <cpu type='tcg' name='z10EC.2-base' usable='no'/>
-  <cpu type='tcg' name='z990.2' usable='no'/>
-  <cpu type='tcg' name='z890.2' usable='no'/>
-  <cpu type='tcg' name='zBC12-base' usable='no'/>
-  <cpu type='tcg' name='z800-base' usable='no'/>
-  <cpu type='tcg' name='zEC12' usable='no'/>
-  <cpu type='tcg' name='z9BC.2-base' usable='no'/>
-  <cpu type='tcg' name='z9BC' usable='no'/>
-  <cpu type='tcg' name='z10BC.2-base' usable='no'/>
-  <cpu type='tcg' name='z990.4-base' usable='no'/>
+  <cpu type='tcg' name='z9EC.3-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.5-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10EC.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9BC.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10EC' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.3-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z14' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='vxeh'/>
+    <blocker name='vxpd'/>
+    <blocker name='gs'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='iep'/>
+    <blocker name='vx'/>
+    <blocker name='dfppc'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='ais'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='tsi'/>
+    <blocker name='sema'/>
+    <blocker name='minste2'/>
+    <blocker name='eec'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='opc'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa8'/>
+    <blocker name='msa7'/>
+    <blocker name='msa6'/>
+    <blocker name='msa5'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13s' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='vx'/>
+    <blocker name='dfppc'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa5'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10EC.3-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zEC12.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890.3-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9EC.3' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.5' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='vx'/>
+    <blocker name='dfppc'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa5'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13s-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='dfppc'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z14-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='dfppc'/>
+    <blocker name='tsi'/>
+    <blocker name='sema'/>
+    <blocker name='minste2'/>
+    <blocker name='eec'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='opc'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9EC.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.4' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zEC12-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9EC.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zBC12' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z196.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.3' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.2-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z900.3-base' usable='no'>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890.3' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10EC.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.2' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890.2' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zBC12-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z800-base' usable='no'>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='zEC12' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9BC.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9BC' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='sthyi'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z10BC.2-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z990.4-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
   <cpu type='tcg' name='qemu' usable='yes'/>
-  <cpu type='tcg' name='z10BC-base' usable='no'/>
-  <cpu type='tcg' name='z9BC-base' usable='no'/>
-  <cpu type='tcg' name='z800' usable='no'/>
-  <cpu type='tcg' name='z890.2-base' usable='no'/>
-  <cpu type='tcg' name='z13.2' usable='no'/>
-  <cpu type='tcg' name='z114-base' usable='no'/>
-  <cpu type='tcg' name='z196-base' usable='no'/>
-  <cpu type='tcg' name='z13-base' usable='no'/>
-  <cpu type='tcg' name='z890' usable='no'/>
+  <cpu type='tcg' name='z10BC-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z9BC-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z800' usable='no'>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890.2-base' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13.2' usable='no'>
+    <blocker name='cmm'/>
+    <blocker name='dateh2'/>
+    <blocker name='esop'/>
+    <blocker name='sea_esop2'/>
+    <blocker name='vx'/>
+    <blocker name='dfppc'/>
+    <blocker name='edat2'/>
+    <blocker name='aefsi'/>
+    <blocker name='sthyi'/>
+    <blocker name='te'/>
+    <blocker name='aen'/>
+    <blocker name='zpci'/>
+    <blocker name='ri'/>
+    <blocker name='iacc2'/>
+    <blocker name='cte'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='ipter'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='edat'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa5'/>
+    <blocker name='msa4'/>
+    <blocker name='msa3'/>
+    <blocker name='msa2'/>
+    <blocker name='msa1'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z114-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z196-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='iacc2'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z13-base' usable='no'>
+    <blocker name='dateh2'/>
+    <blocker name='dfppc'/>
+    <blocker name='iacc2'/>
+    <blocker name='dfpzc'/>
+    <blocker name='cmpsceh'/>
+    <blocker name='pfpo'/>
+    <blocker name='dfphp'/>
+    <blocker name='dfp'/>
+    <blocker name='sprogp'/>
+    <blocker name='fpe'/>
+    <blocker name='emon'/>
+    <blocker name='ectg'/>
+    <blocker name='parseh'/>
+    <blocker name='hfpue'/>
+    <blocker name='hfpm'/>
+    <blocker name='nonqks'/>
+    <blocker name='csske'/>
+    <blocker name='srs'/>
+    <blocker name='asnlxr'/>
+    <blocker name='msa'/>
+    <blocker name='gen13ptff'/>
+    <blocker name='tods'/>
+    <blocker name='type'/>
+  </cpu>
+  <cpu type='tcg' name='z890' usable='no'>
+    <blocker name='hfpm'/>
+    <blocker name='msa'/>
+    <blocker name='type'/>
+  </cpu>
   <machine name='s390-ccw-virtio-2.10' alias='s390-ccw-virtio' maxCpus='248'/>
   <machine name='s390-ccw-virtio-2.7' maxCpus='248'/>
   <machine name='s390-ccw-virtio-2.6' maxCpus='248'/>
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
index 10a182e185..ddbd8c32fa 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
@@ -701,7 +701,14 @@
   <cpu type='kvm' name='base' usable='yes'/>
   <cpu type='kvm' name='qemu64' usable='yes'/>
   <cpu type='kvm' name='qemu32' usable='yes'/>
-  <cpu type='kvm' name='phenom' usable='no'/>
+  <cpu type='kvm' name='phenom' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='fxsr-opt'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+    <blocker name='sse4a'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='kvm' name='pentium3' usable='yes'/>
   <cpu type='kvm' name='pentium2' usable='yes'/>
   <cpu type='kvm' name='pentium' usable='yes'/>
@@ -710,31 +717,104 @@
   <cpu type='kvm' name='kvm32' usable='yes'/>
   <cpu type='kvm' name='coreduo' usable='yes'/>
   <cpu type='kvm' name='core2duo' usable='yes'/>
-  <cpu type='kvm' name='athlon' usable='no'/>
+  <cpu type='kvm' name='athlon' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+  </cpu>
   <cpu type='kvm' name='Westmere' usable='yes'/>
-  <cpu type='kvm' name='Skylake-Server' usable='no'/>
-  <cpu type='kvm' name='Skylake-Client' usable='no'/>
+  <cpu type='kvm' name='Skylake-Server' usable='no'>
+    <blocker name='hle'/>
+    <blocker name='rtm'/>
+    <blocker name='mpx'/>
+    <blocker name='avx512f'/>
+    <blocker name='avx512dq'/>
+    <blocker name='rdseed'/>
+    <blocker name='adx'/>
+    <blocker name='smap'/>
+    <blocker name='clwb'/>
+    <blocker name='avx512cd'/>
+    <blocker name='avx512bw'/>
+    <blocker name='avx512vl'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+    <blocker name='xgetbv1'/>
+    <blocker name='mpx'/>
+    <blocker name='mpx'/>
+    <blocker name='avx512f'/>
+    <blocker name='avx512f'/>
+    <blocker name='avx512f'/>
+  </cpu>
+  <cpu type='kvm' name='Skylake-Client' usable='no'>
+    <blocker name='hle'/>
+    <blocker name='rtm'/>
+    <blocker name='mpx'/>
+    <blocker name='rdseed'/>
+    <blocker name='adx'/>
+    <blocker name='smap'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+    <blocker name='xgetbv1'/>
+    <blocker name='mpx'/>
+    <blocker name='mpx'/>
+  </cpu>
   <cpu type='kvm' name='SandyBridge' usable='yes'/>
   <cpu type='kvm' name='Penryn' usable='yes'/>
-  <cpu type='kvm' name='Opteron_G5' usable='no'/>
-  <cpu type='kvm' name='Opteron_G4' usable='no'/>
-  <cpu type='kvm' name='Opteron_G3' usable='no'/>
+  <cpu type='kvm' name='Opteron_G5' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G4' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G3' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='kvm' name='Opteron_G2' usable='yes'/>
   <cpu type='kvm' name='Opteron_G1' usable='yes'/>
   <cpu type='kvm' name='Nehalem' usable='yes'/>
   <cpu type='kvm' name='IvyBridge' usable='yes'/>
-  <cpu type='kvm' name='Haswell' usable='no'/>
+  <cpu type='kvm' name='Haswell' usable='no'>
+    <blocker name='hle'/>
+    <blocker name='rtm'/>
+  </cpu>
   <cpu type='kvm' name='Haswell-noTSX' usable='yes'/>
   <cpu type='kvm' name='Conroe' usable='yes'/>
-  <cpu type='kvm' name='Broadwell' usable='no'/>
-  <cpu type='kvm' name='Broadwell-noTSX' usable='no'/>
+  <cpu type='kvm' name='Broadwell' usable='no'>
+    <blocker name='hle'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='adx'/>
+    <blocker name='smap'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
+  <cpu type='kvm' name='Broadwell-noTSX' usable='no'>
+    <blocker name='rdseed'/>
+    <blocker name='adx'/>
+    <blocker name='smap'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
   <cpu type='kvm' name='486' usable='yes'/>
   <cpu type='tcg' name='max' usable='yes'/>
-  <cpu type='tcg' name='host' usable='no'/>
+  <cpu type='tcg' name='host' usable='no'>
+    <blocker name='kvm'/>
+  </cpu>
   <cpu type='tcg' name='base' usable='yes'/>
   <cpu type='tcg' name='qemu64' usable='yes'/>
   <cpu type='tcg' name='qemu32' usable='yes'/>
-  <cpu type='tcg' name='phenom' usable='no'/>
+  <cpu type='tcg' name='phenom' usable='no'>
+    <blocker name='fxsr-opt'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='tcg' name='pentium3' usable='yes'/>
   <cpu type='tcg' name='pentium2' usable='yes'/>
   <cpu type='tcg' name='pentium' usable='yes'/>
@@ -745,22 +825,132 @@
   <cpu type='tcg' name='core2duo' usable='yes'/>
   <cpu type='tcg' name='athlon' usable='yes'/>
   <cpu type='tcg' name='Westmere' usable='yes'/>
-  <cpu type='tcg' name='Skylake-Server' usable='no'/>
-  <cpu type='tcg' name='Skylake-Client' usable='no'/>
-  <cpu type='tcg' name='SandyBridge' usable='no'/>
+  <cpu type='tcg' name='Skylake-Server' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='avx512f'/>
+    <blocker name='avx512dq'/>
+    <blocker name='rdseed'/>
+    <blocker name='avx512cd'/>
+    <blocker name='avx512bw'/>
+    <blocker name='avx512vl'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+  </cpu>
+  <cpu type='tcg' name='Skylake-Client' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+  </cpu>
+  <cpu type='tcg' name='SandyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+  </cpu>
   <cpu type='tcg' name='Penryn' usable='yes'/>
-  <cpu type='tcg' name='Opteron_G5' usable='no'/>
-  <cpu type='tcg' name='Opteron_G4' usable='no'/>
-  <cpu type='tcg' name='Opteron_G3' usable='no'/>
+  <cpu type='tcg' name='Opteron_G5' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G4' usable='no'>
+    <blocker name='avx'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G3' usable='no'>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='tcg' name='Opteron_G2' usable='yes'/>
   <cpu type='tcg' name='Opteron_G1' usable='yes'/>
   <cpu type='tcg' name='Nehalem' usable='yes'/>
-  <cpu type='tcg' name='IvyBridge' usable='no'/>
-  <cpu type='tcg' name='Haswell' usable='no'/>
-  <cpu type='tcg' name='Haswell-noTSX' usable='no'/>
+  <cpu type='tcg' name='IvyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+  </cpu>
   <cpu type='tcg' name='Conroe' usable='yes'/>
-  <cpu type='tcg' name='Broadwell' usable='no'/>
-  <cpu type='tcg' name='Broadwell-noTSX' usable='no'/>
+  <cpu type='tcg' name='Broadwell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
+  <cpu type='tcg' name='Broadwell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
   <cpu type='tcg' name='486' usable='yes'/>
   <machine name='pc-i440fx-2.10' alias='pc' hotplugCpus='yes' maxCpus='255'/>
   <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
diff --git a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
index 88029c04dd..3165b2dee3 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
@@ -217,7 +217,14 @@
   <cpu type='kvm' name='host' usable='yes'/>
   <cpu type='kvm' name='qemu64' usable='yes'/>
   <cpu type='kvm' name='qemu32' usable='yes'/>
-  <cpu type='kvm' name='phenom' usable='no'/>
+  <cpu type='kvm' name='phenom' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='fxsr-opt'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+    <blocker name='sse4a'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='kvm' name='pentium3' usable='yes'/>
   <cpu type='kvm' name='pentium2' usable='yes'/>
   <cpu type='kvm' name='pentium' usable='yes'/>
@@ -226,14 +233,32 @@
   <cpu type='kvm' name='kvm32' usable='yes'/>
   <cpu type='kvm' name='coreduo' usable='yes'/>
   <cpu type='kvm' name='core2duo' usable='yes'/>
-  <cpu type='kvm' name='athlon' usable='no'/>
+  <cpu type='kvm' name='athlon' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+  </cpu>
   <cpu type='kvm' name='Westmere' usable='yes'/>
   <cpu type='kvm' name='Skylake-Client' usable='yes'/>
   <cpu type='kvm' name='SandyBridge' usable='yes'/>
   <cpu type='kvm' name='Penryn' usable='yes'/>
-  <cpu type='kvm' name='Opteron_G5' usable='no'/>
-  <cpu type='kvm' name='Opteron_G4' usable='no'/>
-  <cpu type='kvm' name='Opteron_G3' usable='no'/>
+  <cpu type='kvm' name='Opteron_G5' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G4' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G3' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='kvm' name='Opteron_G2' usable='yes'/>
   <cpu type='kvm' name='Opteron_G1' usable='yes'/>
   <cpu type='kvm' name='Nehalem' usable='yes'/>
@@ -244,10 +269,15 @@
   <cpu type='kvm' name='Broadwell' usable='yes'/>
   <cpu type='kvm' name='Broadwell-noTSX' usable='yes'/>
   <cpu type='kvm' name='486' usable='yes'/>
-  <cpu type='tcg' name='host' usable='no'/>
+  <cpu type='tcg' name='host' usable='no'>
+    <blocker name='kvm'/>
+  </cpu>
   <cpu type='tcg' name='qemu64' usable='yes'/>
   <cpu type='tcg' name='qemu32' usable='yes'/>
-  <cpu type='tcg' name='phenom' usable='no'/>
+  <cpu type='tcg' name='phenom' usable='no'>
+    <blocker name='fxsr-opt'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='tcg' name='pentium3' usable='yes'/>
   <cpu type='tcg' name='pentium2' usable='yes'/>
   <cpu type='tcg' name='pentium' usable='yes'/>
@@ -258,21 +288,111 @@
   <cpu type='tcg' name='core2duo' usable='yes'/>
   <cpu type='tcg' name='athlon' usable='yes'/>
   <cpu type='tcg' name='Westmere' usable='yes'/>
-  <cpu type='tcg' name='Skylake-Client' usable='no'/>
-  <cpu type='tcg' name='SandyBridge' usable='no'/>
+  <cpu type='tcg' name='Skylake-Client' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+  </cpu>
+  <cpu type='tcg' name='SandyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+  </cpu>
   <cpu type='tcg' name='Penryn' usable='yes'/>
-  <cpu type='tcg' name='Opteron_G5' usable='no'/>
-  <cpu type='tcg' name='Opteron_G4' usable='no'/>
-  <cpu type='tcg' name='Opteron_G3' usable='no'/>
+  <cpu type='tcg' name='Opteron_G5' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G4' usable='no'>
+    <blocker name='avx'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G3' usable='no'>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='tcg' name='Opteron_G2' usable='yes'/>
   <cpu type='tcg' name='Opteron_G1' usable='yes'/>
   <cpu type='tcg' name='Nehalem' usable='yes'/>
-  <cpu type='tcg' name='IvyBridge' usable='no'/>
-  <cpu type='tcg' name='Haswell' usable='no'/>
-  <cpu type='tcg' name='Haswell-noTSX' usable='no'/>
+  <cpu type='tcg' name='IvyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+  </cpu>
   <cpu type='tcg' name='Conroe' usable='yes'/>
-  <cpu type='tcg' name='Broadwell' usable='no'/>
-  <cpu type='tcg' name='Broadwell-noTSX' usable='no'/>
+  <cpu type='tcg' name='Broadwell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
+  <cpu type='tcg' name='Broadwell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
   <cpu type='tcg' name='486' usable='yes'/>
   <machine name='pc-i440fx-2.8' alias='pc' hotplugCpus='yes' maxCpus='255'/>
   <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
diff --git a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
index e3ff127270..05f9dc0308 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
@@ -694,7 +694,14 @@
   <cpu type='kvm' name='base' usable='yes'/>
   <cpu type='kvm' name='qemu64' usable='yes'/>
   <cpu type='kvm' name='qemu32' usable='yes'/>
-  <cpu type='kvm' name='phenom' usable='no'/>
+  <cpu type='kvm' name='phenom' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='fxsr-opt'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+    <blocker name='sse4a'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='kvm' name='pentium3' usable='yes'/>
   <cpu type='kvm' name='pentium2' usable='yes'/>
   <cpu type='kvm' name='pentium' usable='yes'/>
@@ -703,14 +710,32 @@
   <cpu type='kvm' name='kvm32' usable='yes'/>
   <cpu type='kvm' name='coreduo' usable='yes'/>
   <cpu type='kvm' name='core2duo' usable='yes'/>
-  <cpu type='kvm' name='athlon' usable='no'/>
+  <cpu type='kvm' name='athlon' usable='no'>
+    <blocker name='mmxext'/>
+    <blocker name='3dnowext'/>
+    <blocker name='3dnow'/>
+  </cpu>
   <cpu type='kvm' name='Westmere' usable='yes'/>
   <cpu type='kvm' name='Skylake-Client' usable='yes'/>
   <cpu type='kvm' name='SandyBridge' usable='yes'/>
   <cpu type='kvm' name='Penryn' usable='yes'/>
-  <cpu type='kvm' name='Opteron_G5' usable='no'/>
-  <cpu type='kvm' name='Opteron_G4' usable='no'/>
-  <cpu type='kvm' name='Opteron_G3' usable='no'/>
+  <cpu type='kvm' name='Opteron_G5' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G4' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='kvm' name='Opteron_G3' usable='no'>
+    <blocker name='sse4a'/>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='kvm' name='Opteron_G2' usable='yes'/>
   <cpu type='kvm' name='Opteron_G1' usable='yes'/>
   <cpu type='kvm' name='Nehalem' usable='yes'/>
@@ -722,11 +747,16 @@
   <cpu type='kvm' name='Broadwell-noTSX' usable='yes'/>
   <cpu type='kvm' name='486' usable='yes'/>
   <cpu type='tcg' name='max' usable='yes'/>
-  <cpu type='tcg' name='host' usable='no'/>
+  <cpu type='tcg' name='host' usable='no'>
+    <blocker name='kvm'/>
+  </cpu>
   <cpu type='tcg' name='base' usable='yes'/>
   <cpu type='tcg' name='qemu64' usable='yes'/>
   <cpu type='tcg' name='qemu32' usable='yes'/>
-  <cpu type='tcg' name='phenom' usable='no'/>
+  <cpu type='tcg' name='phenom' usable='no'>
+    <blocker name='fxsr-opt'/>
+    <blocker name='npt'/>
+  </cpu>
   <cpu type='tcg' name='pentium3' usable='yes'/>
   <cpu type='tcg' name='pentium2' usable='yes'/>
   <cpu type='tcg' name='pentium' usable='yes'/>
@@ -737,21 +767,111 @@
   <cpu type='tcg' name='core2duo' usable='yes'/>
   <cpu type='tcg' name='athlon' usable='yes'/>
   <cpu type='tcg' name='Westmere' usable='yes'/>
-  <cpu type='tcg' name='Skylake-Client' usable='no'/>
-  <cpu type='tcg' name='SandyBridge' usable='no'/>
+  <cpu type='tcg' name='Skylake-Client' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xsavec'/>
+  </cpu>
+  <cpu type='tcg' name='SandyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+  </cpu>
   <cpu type='tcg' name='Penryn' usable='yes'/>
-  <cpu type='tcg' name='Opteron_G5' usable='no'/>
-  <cpu type='tcg' name='Opteron_G4' usable='no'/>
-  <cpu type='tcg' name='Opteron_G3' usable='no'/>
+  <cpu type='tcg' name='Opteron_G5' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+    <blocker name='tbm'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G4' usable='no'>
+    <blocker name='avx'/>
+    <blocker name='misalignsse'/>
+    <blocker name='3dnowprefetch'/>
+    <blocker name='xop'/>
+    <blocker name='fma4'/>
+  </cpu>
+  <cpu type='tcg' name='Opteron_G3' usable='no'>
+    <blocker name='misalignsse'/>
+  </cpu>
   <cpu type='tcg' name='Opteron_G2' usable='yes'/>
   <cpu type='tcg' name='Opteron_G1' usable='yes'/>
   <cpu type='tcg' name='Nehalem' usable='yes'/>
-  <cpu type='tcg' name='IvyBridge' usable='no'/>
-  <cpu type='tcg' name='Haswell' usable='no'/>
-  <cpu type='tcg' name='Haswell-noTSX' usable='no'/>
+  <cpu type='tcg' name='IvyBridge' usable='no'>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+  </cpu>
+  <cpu type='tcg' name='Haswell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+  </cpu>
   <cpu type='tcg' name='Conroe' usable='yes'/>
-  <cpu type='tcg' name='Broadwell' usable='no'/>
-  <cpu type='tcg' name='Broadwell-noTSX' usable='no'/>
+  <cpu type='tcg' name='Broadwell' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='hle'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rtm'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
+  <cpu type='tcg' name='Broadwell-noTSX' usable='no'>
+    <blocker name='fma'/>
+    <blocker name='pcid'/>
+    <blocker name='x2apic'/>
+    <blocker name='tsc-deadline'/>
+    <blocker name='avx'/>
+    <blocker name='f16c'/>
+    <blocker name='rdrand'/>
+    <blocker name='avx2'/>
+    <blocker name='invpcid'/>
+    <blocker name='rdseed'/>
+    <blocker name='3dnowprefetch'/>
+  </cpu>
   <cpu type='tcg' name='486' usable='yes'/>
   <machine name='pc-i440fx-2.9' alias='pc' hotplugCpus='yes' maxCpus='255'/>
   <machine name='pc-0.12' hotplugCpus='yes' maxCpus='255'/>
-- 
2.14.2




More information about the libvir-list mailing list