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

Jiri Denemark jdenemar at redhat.com
Wed Oct 4 14:58:28 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>
---
 src/qemu/qemu_capabilities.c                      |    2 +-
 src/qemu/qemu_monitor.c                           |    2 +
 src/qemu/qemu_monitor.h                           |    1 +
 src/qemu/qemu_monitor_json.c                      |   26 +-
 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(+), 121 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 1ce2aa375f..7ddc6cafd4 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3006,7 +3006,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 363ad76cfe..04bf1ab5c1 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 6414d2483a..ee6f27cf35 100644
--- a/src/qemu/qemu_monitor.h
+++ b/src/qemu/qemu_monitor.h
@@ -972,6 +972,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 c63d250d36..fcdd58b369 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -5076,6 +5076,8 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
 
         if (virJSONValueObjectHasKey(child, "unavailable-features")) {
             virJSONValuePtr blockers;
+            size_t j;
+            int len;
 
             blockers = virJSONValueObjectGetArray(child,
                                                   "unavailable-features");
@@ -5086,10 +5088,32 @@ qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
                 goto cleanup;
             }
 
-            if (virJSONValueArraySize(blockers) > 0)
+            len = virJSONValueArraySize(blockers);
+
+            if (len != 0)
                 cpu->usable = VIR_TRISTATE_BOOL_NO;
             else
                 cpu->usable = VIR_TRISTATE_BOOL_YES;
+
+            if (len > 0 && VIR_ALLOC_N(cpu->blockers, len + 1) < 0)
+                goto cleanup;
+
+            for (j = 0; j < len; j++) {
+                virJSONValuePtr blocker = virJSONValueArrayGet(blockers, j);
+                char *name;
+
+                if (blocker->type != VIR_JSON_TYPE_STRING) {
+                    virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                                   _("unexpected value in unavailable-features "
+                                     "array"));
+                    goto cleanup;
+                }
+
+                if (VIR_STRDUP(name, virJSONValueGetString(blocker)) < 0)
+                    goto cleanup;
+
+                cpu->blockers[j] = name;
+            }
         }
     }
 
diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
index 2806345b9d..1d3edc527b 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml
@@ -241,72 +241,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 8a31431c09..1a4a73e0fb 100644
--- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
@@ -700,7 +700,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'/>
@@ -709,31 +716,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'/>
@@ -744,22 +824,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 761f9d1415..7cea98cb36 100644
--- a/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml
@@ -216,7 +216,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'/>
@@ -225,14 +232,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'/>
@@ -243,10 +268,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'/>
@@ -257,21 +287,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 3641d03323..c54ac89929 100644
--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
+++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
@@ -693,7 +693,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'/>
@@ -702,14 +709,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'/>
@@ -721,11 +746,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'/>
@@ -736,21 +766,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