Merge ~paelzer/ubuntu/+source/libvirt:bug-1828495-arch-capability-eoan into ubuntu/+source/libvirt:ubuntu/eoan-devel

Proposed by Christian Ehrhardt  on 2019-08-20
Status: Merged
Approved by: Christian Ehrhardt  on 2019-08-22
Approved revision: ea868df478f6096dc513e308db6f7a69b5cf4266
Merge reported by: Christian Ehrhardt 
Merged at revision: ea868df478f6096dc513e308db6f7a69b5cf4266
Proposed branch: ~paelzer/ubuntu/+source/libvirt:bug-1828495-arch-capability-eoan
Merge into: ubuntu/+source/libvirt:ubuntu/eoan-devel
Diff against target: 6266 lines (+6190/-0)
12 files modified
debian/changelog (+7/-0)
debian/patches/series (+10/-0)
debian/patches/ubuntu/lp-1828495-conf-Introduce-virCPUDefCheckFeatures.patch (+100/-0)
debian/patches/ubuntu/lp-1828495-cpu_conf-Introduce-virCPUDefFilterFeatures.patch (+88/-0)
debian/patches/ubuntu/lp-1828495-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-feature.patch (+151/-0)
debian/patches/ubuntu/lp-1828495-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch (+119/-0)
debian/patches/ubuntu/lp-1828495-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIE.patch (+93/-0)
debian/patches/ubuntu/lp-1828495-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-functi.patch (+138/-0)
debian/patches/ubuntu/lp-1828495-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch (+83/-0)
debian/patches/ubuntu/lp-1828495-qemu-Forbid-MSR-features-with-old-QEMU.patch (+77/-0)
debian/patches/ubuntu/lp-1828495-qemu-Probe-for-max-x86_64-cpu-type.patch (+128/-0)
debian/patches/ubuntu/lp-1828495-qemu-Probe-for-unavailable-features-CPU-property.patch (+5196/-0)
Reviewer Review Type Date Requested Status
Rafael David Tinoco 2019-08-20 Pending
Canonical Server Team 2019-08-20 Pending
Canonical Server packageset reviewers 2019-08-20 Pending
Ubuntu Server Dev import team 2019-08-20 Pending
Review via email: mp+371504@code.launchpad.net
To post a comment you must log in.
Christian Ehrhardt  (paelzer) wrote :

Clearly WIP - this series explodes once considering all dependencies :-/

Christian Ehrhardt  (paelzer) wrote :

Now things at least build, but we need some testing.

Christian Ehrhardt  (paelzer) wrote :

Added Rafael for tests on the Cascade lake system (and review if you find time).
I'll kick off a generic regression test on this.

Christian Ehrhardt  (paelzer) wrote :

FYI: Fixed list of patches now pushed to the MP for review

Christian Ehrhardt  (paelzer) wrote :

Regression tests are fine on this, let me know if tests on cascade lake work as intended.

Christian Ehrhardt  (paelzer) wrote :

All tests LGTM, I have asked sfeole to maybe allow me access to the system to test these.
But since none of the usual functions seems affected we can upload it to Eoan for FF and fix it if needed there before considering SRUs.

But if sfeole is faster than FF happens I'd really like a quick test at least.
Holding back upload for now.

Rafael David Tinoco (rafaeldtinoco) wrote :

Testing this merge locally (functionalities) and doing a quick code review as well.. shall not take long.

Christian Ehrhardt  (paelzer) wrote :

After resolving some general (not related to this PPA) Eoan testing issues I ran general tests again. Now the remaining things that already looked fine are finally confirmed to be good for sure.

Christian Ehrhardt  (paelzer) wrote :

On a HW which I knew had nothing of these new features I at least could try the different of:
root@e:~# virsh start eoan
error: Failed to start domain eoan
error: unsupported configuration: unknown CPU feature: mds-doesntexist

And
root@e:~# virsh start eoan
error: Failed to start domain eoan
error: unsupported configuration: Some features cannot be reliably used with this QEMU: mds-no

Which is true, here qemu can't define that.

Christian Ehrhardt  (paelzer) wrote :

capability detection works fine and for that I'll upload.

--- old.c.xml 2019-08-22 13:00:10.381464090 +0000
+++ new.c.xml 2019-08-22 13:02:16.907483989 +0000
@@ -37,6 +37,10 @@
       <feature name='mbm_total'/>
       <feature name='mbm_local'/>
       <feature name='invtsc'/>
+ <feature name='rdctl-no'/>
+ <feature name='ibrs-all'/>
+ <feature name='skip-l1dfl-vmentry'/>
+ <feature name='mds-no'/>
       <pages unit='KiB' size='4'/>
       <pages unit='KiB' size='2048'/>
       <pages unit='KiB' size='1048576'/>

But for the whole context we might need more as the domcapabilities have not picked them up.
So we might need some more fixups after this one.

Christian Ehrhardt  (paelzer) wrote :

Base string as detected is:

-cpu Cascadelake-Server,ss=on,vmx=on,hypervisor=on,tsc_adjust=on,umip=on,pku=on,md-clear=on,stibp=on,arch-capabilities=on,xsaves=on,invtsc=on

And with a silly but effective test:
  <qemu:commandline>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='Cascadelake-Server,ss=on,vmx=on,hypervisor=on,tsc_adjust=on,umip=on,pku=on,md-clear=on,stibp=on,arch-capabilities=on,xsaves=on,invtsc=on,rdctl-no=on,ibrs-all=on,skip-l1dfl-vmentry=on,mds-no=on'/>
  </qemu:commandline>

That made the guest start with these features.
Which implies qemu can pass/use them right?

With these I get:
ubuntu@eoan:~$ sudo rdmsr 0x10a
2b

Uploading this and filing a bug for the fixup of the domcaps between now and Eoan release

Christian Ehrhardt  (paelzer) wrote :

After discussion with Tinoco approve and uploaded, bug 1841066 to track follow ups.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/changelog b/debian/changelog
2index 17f9456..d2b101b 100644
3--- a/debian/changelog
4+++ b/debian/changelog
5@@ -1,3 +1,10 @@
6+libvirt (5.4.0-0ubuntu4) eoan; urgency=medium
7+
8+ * d/p/ubuntu/lp-1828495-*: make libvirt able to handle arch_capabilities
9+ cpu features (LP: #1828495)
10+
11+ -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 20 Aug 2019 10:50:08 +0200
12+
13 libvirt (5.4.0-0ubuntu3) eoan; urgency=medium
14
15 * SECURITY UPDATE: virDomainSaveImageGetXMLDesc does not check for
16diff --git a/debian/patches/series b/debian/patches/series
17index c43a279..04b7423 100644
18--- a/debian/patches/series
19+++ b/debian/patches/series
20@@ -48,3 +48,13 @@ ubuntu-aa/0034-apparmor-virt-aa-helper-access-for-snapped-nova.patch
21 ubuntu-aa/0050-local-include-for-libvirt-qemu.patch
22 ubuntu-aa/lp-1815910-allow-vhost-hotplug.patch
23 ubuntu-aa/lp-1833040-Add-openGraphicsFD-rule-for-named-profile.patch
24+ubuntu/lp-1828495-cpu_conf-Introduce-virCPUDefFilterFeatures.patch
25+ubuntu/lp-1828495-qemu-Probe-for-max-x86_64-cpu-type.patch
26+ubuntu/lp-1828495-qemu-Probe-for-unavailable-features-CPU-property.patch
27+ubuntu/lp-1828495-conf-Introduce-virCPUDefCheckFeatures.patch
28+ubuntu/lp-1828495-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-functi.patch
29+ubuntu/lp-1828495-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch
30+ubuntu/lp-1828495-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIE.patch
31+ubuntu/lp-1828495-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-feature.patch
32+ubuntu/lp-1828495-qemu-Forbid-MSR-features-with-old-QEMU.patch
33+ubuntu/lp-1828495-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch
34diff --git a/debian/patches/ubuntu/lp-1828495-conf-Introduce-virCPUDefCheckFeatures.patch b/debian/patches/ubuntu/lp-1828495-conf-Introduce-virCPUDefCheckFeatures.patch
35new file mode 100644
36index 0000000..5703372
37--- /dev/null
38+++ b/debian/patches/ubuntu/lp-1828495-conf-Introduce-virCPUDefCheckFeatures.patch
39@@ -0,0 +1,100 @@
40+From 4e6f58b8d55d44fa9f80736b2745b44710f6e25a Mon Sep 17 00:00:00 2001
41+From: Jiri Denemark <jdenemar@redhat.com>
42+Date: Wed, 19 Jun 2019 19:01:30 +0200
43+Subject: [PATCH] conf: Introduce virCPUDefCheckFeatures
44+MIME-Version: 1.0
45+Content-Type: text/plain; charset=UTF-8
46+Content-Transfer-Encoding: 8bit
47+
48+This API can be used to check whether a CPU definition contains features
49+matching a given filter.
50+
51+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
52+Reviewed-by: Ján Tomko <jtomko@redhat.com>
53+
54+Origin: upstream, https://libvirt.org/git/?p=libvirt.git;a=commit;h=4e6f58b8
55+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
56+Last-Update: 2019-08-20
57+
58+---
59+ src/conf/cpu_conf.c | 33 +++++++++++++++++++++++++++++++++
60+ src/conf/cpu_conf.h | 6 ++++++
61+ src/libvirt_private.syms | 1 +
62+ 3 files changed, 40 insertions(+)
63+
64+diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
65+index 675d214c50..7d16a05283 100644
66+--- a/src/conf/cpu_conf.c
67++++ b/src/conf/cpu_conf.c
68+@@ -930,6 +930,39 @@ virCPUDefFilterFeatures(virCPUDefPtr cpu,
69+ }
70+
71+
72++/**
73++ * virCPUDefCheckFeatures:
74++ *
75++ * Check CPU features for which @filter reports true and store them in a NULL
76++ * terminated list returned via @features.
77++ *
78++ * Returns the number of features matching @filter or -1 on error.
79++ */
80++int
81++virCPUDefCheckFeatures(virCPUDefPtr cpu,
82++ virCPUDefFeatureFilter filter,
83++ void *opaque,
84++ char ***features)
85++{
86++ VIR_AUTOSTRINGLIST list = NULL;
87++ size_t n = 0;
88++ size_t i;
89++
90++ *features = NULL;
91++
92++ for (i = 0; i < cpu->nfeatures; i++) {
93++ if (filter(cpu->features[i].name, opaque)) {
94++ if (virStringListAdd(&list, cpu->features[i].name) < 0)
95++ return -1;
96++ n++;
97++ }
98++ }
99++
100++ VIR_STEAL_PTR(*features, list);
101++ return n;
102++}
103++
104++
105+ bool
106+ virCPUDefIsEqual(virCPUDefPtr src,
107+ virCPUDefPtr dst,
108+diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
109+index 906ef5368e..19ce816ec2 100644
110+--- a/src/conf/cpu_conf.h
111++++ b/src/conf/cpu_conf.h
112+@@ -224,6 +224,12 @@ virCPUDefFilterFeatures(virCPUDefPtr cpu,
113+ virCPUDefFeatureFilter filter,
114+ void *opaque);
115+
116++int
117++virCPUDefCheckFeatures(virCPUDefPtr cpu,
118++ virCPUDefFeatureFilter filter,
119++ void *opaque,
120++ char ***features);
121++
122+ virCPUDefPtr *
123+ virCPUDefListParse(const char **xmlCPUs,
124+ unsigned int ncpus,
125+diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
126+index ab2e4bc6fe..90a6d10666 100644
127+--- a/src/libvirt_private.syms
128++++ b/src/libvirt_private.syms
129+@@ -73,6 +73,7 @@ virCapabilitiesSetNetPrefix;
130+ virCPUCacheModeTypeFromString;
131+ virCPUCacheModeTypeToString;
132+ virCPUDefAddFeature;
133++virCPUDefCheckFeatures;
134+ virCPUDefCopy;
135+ virCPUDefCopyModel;
136+ virCPUDefCopyModelFilter;
137+--
138+2.22.0
139+
140diff --git a/debian/patches/ubuntu/lp-1828495-cpu_conf-Introduce-virCPUDefFilterFeatures.patch b/debian/patches/ubuntu/lp-1828495-cpu_conf-Introduce-virCPUDefFilterFeatures.patch
141new file mode 100644
142index 0000000..27f615a
143--- /dev/null
144+++ b/debian/patches/ubuntu/lp-1828495-cpu_conf-Introduce-virCPUDefFilterFeatures.patch
145@@ -0,0 +1,88 @@
146+From c145b660b8225f73db16660461077ef931730939 Mon Sep 17 00:00:00 2001
147+From: Jiri Denemark <jdenemar@redhat.com>
148+Date: Fri, 7 Jun 2019 14:07:10 +0200
149+Subject: [PATCH] cpu_conf: Introduce virCPUDefFilterFeatures
150+MIME-Version: 1.0
151+Content-Type: text/plain; charset=UTF-8
152+Content-Transfer-Encoding: 8bit
153+
154+This new internal API can be used for in place filtering of CPU features
155+in virCPUDef.
156+
157+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
158+Reviewed-by: Ján Tomko <jtomko@redhat.com>
159+
160+Origin: upstream, https://libvirt.org/git/?p=libvirt.git;a=commit;h=c145b660
161+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
162+Last-Update: 2019-08-20
163+
164+---
165+ src/conf/cpu_conf.c | 22 ++++++++++++++++++++++
166+ src/conf/cpu_conf.h | 5 +++++
167+ src/libvirt_private.syms | 1 +
168+ 3 files changed, 28 insertions(+)
169+
170+diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
171+index 825df88246..675d214c50 100644
172+--- a/src/conf/cpu_conf.c
173++++ b/src/conf/cpu_conf.c
174+@@ -908,6 +908,28 @@ virCPUDefFindFeature(virCPUDefPtr def,
175+ }
176+
177+
178++int
179++virCPUDefFilterFeatures(virCPUDefPtr cpu,
180++ virCPUDefFeatureFilter filter,
181++ void *opaque)
182++{
183++ size_t i = 0;
184++
185++ while (i < cpu->nfeatures) {
186++ if (filter(cpu->features[i].name, opaque)) {
187++ i++;
188++ continue;
189++ }
190++
191++ VIR_FREE(cpu->features[i].name);
192++ if (VIR_DELETE_ELEMENT_INPLACE(cpu->features, i, cpu->nfeatures) < 0)
193++ return -1;
194++ }
195++
196++ return 0;
197++}
198++
199++
200+ bool
201+ virCPUDefIsEqual(virCPUDefPtr src,
202+ virCPUDefPtr dst,
203+diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
204+index 562e0de531..906ef5368e 100644
205+--- a/src/conf/cpu_conf.h
206++++ b/src/conf/cpu_conf.h
207+@@ -219,6 +219,11 @@ virCPUFeatureDefPtr
208+ virCPUDefFindFeature(virCPUDefPtr def,
209+ const char *name);
210+
211++int
212++virCPUDefFilterFeatures(virCPUDefPtr cpu,
213++ virCPUDefFeatureFilter filter,
214++ void *opaque);
215++
216+ virCPUDefPtr *
217+ virCPUDefListParse(const char **xmlCPUs,
218+ unsigned int ncpus,
219+diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
220+index 0e6a39b59b..228cd929b4 100644
221+--- a/src/libvirt_private.syms
222++++ b/src/libvirt_private.syms
223+@@ -77,6 +77,7 @@ virCPUDefCopy;
224+ virCPUDefCopyModel;
225+ virCPUDefCopyModelFilter;
226+ virCPUDefCopyWithoutModel;
227++virCPUDefFilterFeatures;
228+ virCPUDefFindFeature;
229+ virCPUDefFormat;
230+ virCPUDefFormatBuf;
231+--
232+2.22.0
233+
234diff --git a/debian/patches/ubuntu/lp-1828495-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-feature.patch b/debian/patches/ubuntu/lp-1828495-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-feature.patch
235new file mode 100644
236index 0000000..17e3d09
237--- /dev/null
238+++ b/debian/patches/ubuntu/lp-1828495-cpu_map-Introduce-IA32_ARCH_CAPABILITIES-MSR-feature.patch
239@@ -0,0 +1,151 @@
240+From c8ec678fd9d97189667c0121f48a220dd26856b7 Mon Sep 17 00:00:00 2001
241+From: Jiri Denemark <jdenemar@redhat.com>
242+Date: Thu, 14 Mar 2019 15:44:38 +0100
243+Subject: [PATCH] cpu_map: Introduce IA32_ARCH_CAPABILITIES MSR features
244+MIME-Version: 1.0
245+Content-Type: text/plain; charset=UTF-8
246+Content-Transfer-Encoding: 8bit
247+
248+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
249+Reviewed-by: Ján Tomko <jtomko@redhat.com>
250+
251+Origin: backport, https://libvirt.org/git/?p=libvirt.git;a=commit;h=c8ec678f
252+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
253+Last-Update: 2019-08-20
254+
255+---
256+ src/cpu_map/x86_features.xml | 20 +++++++++++++++++++
257+ .../x86_64-cpuid-Core-i7-7600U-enabled.xml | 1 +
258+ .../x86_64-cpuid-Core-i7-7600U-json.xml | 1 +
259+ ...86_64-cpuid-Xeon-Platinum-8268-enabled.xml | 1 +
260+ .../x86_64-cpuid-Xeon-Platinum-8268-guest.xml | 4 ++++
261+ .../x86_64-cpuid-Xeon-Platinum-8268-host.xml | 4 ++++
262+ .../x86_64-cpuid-Xeon-Platinum-8268-json.xml | 3 +++
263+ .../qemu_3.1.0.x86_64.xml | 1 +
264+ .../qemu_4.0.0.x86_64.xml | 1 +
265+ 10 files changed, 37 insertions(+)
266+
267+diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
268+index 370807f88e..2bed1e0372 100644
269+--- a/src/cpu_map/x86_features.xml
270++++ b/src/cpu_map/x86_features.xml
271+@@ -482,4 +482,24 @@
272+ <feature name='amd-no-ssb'>
273+ <cpuid eax_in='0x80000008' ebx='0x04000000'/>
274+ </feature>
275++
276++ <!-- IA32_ARCH_CAPABILITIES features -->
277++ <feature name='rdctl-no'>
278++ <msr index='0x10a' edx='0x00000000' eax='0x00000001'/>
279++ </feature>
280++ <feature name='ibrs-all'>
281++ <msr index='0x10a' edx='0x00000000' eax='0x00000002'/>
282++ </feature>
283++ <feature name='rsba'>
284++ <msr index='0x10a' edx='0x00000000' eax='0x00000004'/>
285++ </feature>
286++ <feature name='skip-l1dfl-vmentry'>
287++ <msr index='0x10a' edx='0x00000000' eax='0x00000008'/>
288++ </feature>
289++ <feature name='ssb-no'>
290++ <msr index='0x10a' edx='0x00000000' eax='0x00000010'/>
291++ </feature>
292++ <feature name='mds-no'>
293++ <msr index='0x10a' edx='0x00000000' eax='0x00000020'/>
294++ </feature>
295+ </cpus>
296+diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml
297+index b1cdaa802a..58bc84577c 100644
298+--- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml
299++++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-enabled.xml
300+@@ -5,4 +5,5 @@
301+ <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x009c4fbb' ecx='0x00000004' edx='0x84000000'/>
302+ <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x0000000f' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
303+ <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000121' edx='0x2c100800'/>
304++ <msr index='0x10a' edx='0x00000000' eax='0x00000008'/>
305+ </cpudata>
306+diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml
307+index 48089c6003..690081493b 100644
308+--- a/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml
309++++ b/tests/cputestdata/x86_64-cpuid-Core-i7-7600U-json.xml
310+@@ -10,4 +10,5 @@
311+ <feature policy='require' name='ssbd'/>
312+ <feature policy='require' name='xsaves'/>
313+ <feature policy='require' name='pdpe1gb'/>
314++ <feature policy='require' name='skip-l1dfl-vmentry'/>
315+ </cpu>
316+diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml
317+index 434ac1956a..313009b156 100644
318+--- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml
319++++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-enabled.xml
320+@@ -5,4 +5,5 @@
321+ <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0xd19f4fbb' ecx='0x0000080c' edx='0x84000000'/>
322+ <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x0000000f' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
323+ <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000121' edx='0x2c100800'/>
324++ <msr index='0x10a' edx='0x00000000' eax='0x0000000b'/>
325+ </cpudata>
326+diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml
327+index c7e8a1fccf..988fb1dbdc 100644
328+--- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml
329++++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-guest.xml
330+@@ -30,4 +30,8 @@
331+ <feature policy='require' name='mbm_total'/>
332+ <feature policy='require' name='mbm_local'/>
333+ <feature policy='require' name='invtsc'/>
334++ <feature policy='require' name='rdctl-no'/>
335++ <feature policy='require' name='ibrs-all'/>
336++ <feature policy='require' name='skip-l1dfl-vmentry'/>
337++ <feature policy='require' name='mds-no'/>
338+ </cpu>
339+diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml
340+index d7482751b4..fdeafc4870 100644
341+--- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml
342++++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-host.xml
343+@@ -31,4 +31,8 @@
344+ <feature name='mbm_total'/>
345+ <feature name='mbm_local'/>
346+ <feature name='invtsc'/>
347++ <feature name='rdctl-no'/>
348++ <feature name='ibrs-all'/>
349++ <feature name='skip-l1dfl-vmentry'/>
350++ <feature name='mds-no'/>
351+ </cpu>
352+diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml
353+index b7d12dced7..78863c61d1 100644
354+--- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml
355++++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-8268-json.xml
356+@@ -7,4 +7,7 @@
357+ <feature policy='require' name='umip'/>
358+ <feature policy='require' name='pku'/>
359+ <feature policy='require' name='xsaves'/>
360++ <feature policy='require' name='rdctl-no'/>
361++ <feature policy='require' name='ibrs-all'/>
362++ <feature policy='require' name='skip-l1dfl-vmentry'/>
363+ </cpu>
364+diff --git a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
365+index ca3baab88c..dfd186afba 100644
366+--- a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
367++++ b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
368+@@ -42,6 +42,7 @@
369+ <feature policy='require' name='xsaves'/>
370+ <feature policy='require' name='pdpe1gb'/>
371+ <feature policy='require' name='invtsc'/>
372++ <feature policy='require' name='skip-l1dfl-vmentry'/>
373+ </mode>
374+ <mode name='custom' supported='yes'>
375+ <model usable='yes'>qemu64</model>
376+diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
377+index cba841d844..36f6f1e94d 100644
378+--- a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
379++++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
380+@@ -42,6 +42,7 @@
381+ <feature policy='require' name='xsaves'/>
382+ <feature policy='require' name='pdpe1gb'/>
383+ <feature policy='require' name='invtsc'/>
384++ <feature policy='require' name='skip-l1dfl-vmentry'/>
385+ </mode>
386+ <mode name='custom' supported='yes'>
387+ <model usable='yes'>qemu64</model>
388+--
389+2.22.0
390+
391diff --git a/debian/patches/ubuntu/lp-1828495-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch b/debian/patches/ubuntu/lp-1828495-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch
392new file mode 100644
393index 0000000..4dcdbb3
394--- /dev/null
395+++ b/debian/patches/ubuntu/lp-1828495-cpu_x86-Introduce-virCPUx86FeatureFilter-MSR.patch
396@@ -0,0 +1,119 @@
397+From bcfed7f1c84cbff21d129a79cbd675b0cd51613c Mon Sep 17 00:00:00 2001
398+From: Jiri Denemark <jdenemar@redhat.com>
399+Date: Wed, 19 Jun 2019 21:59:12 +0200
400+Subject: [PATCH] cpu_x86: Introduce virCPUx86FeatureFilter*MSR
401+MIME-Version: 1.0
402+Content-Type: text/plain; charset=UTF-8
403+Content-Transfer-Encoding: 8bit
404+
405+This functions may be used as a virCPUDefFeatureFilter callbacks for
406+virCPUDefCheckFeatures, virCPUDefFilerFeatures, and similar functions to
407+select (virCPUx86FeatureFilterSelectMSR) or drop
408+(virCPUx86FeatureFilterDropMSR) features reported via MSR.
409+
410+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
411+Reviewed-by: Ján Tomko <jtomko@redhat.com>
412+
413+Origin: backport, https://libvirt.org/git/?p=libvirt.git;a=commit;h=bcfed7f1
414+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
415+Last-Update: 2019-08-20
416+
417+---
418+ src/cpu/cpu_x86.c | 57 ++++++++++++++++++++++++++++++++++++++++
419+ src/cpu/cpu_x86.h | 6 +++++
420+ src/libvirt_private.syms | 3 ++-
421+ 3 files changed, 65 insertions(+), 1 deletion(-)
422+
423+--- a/src/cpu/cpu_x86.c
424++++ b/src/cpu/cpu_x86.c
425+@@ -3353,6 +3353,63 @@ virCPUx86DataAddFeature(virCPUDataPtr cp
426+ }
427+
428+
429++static bool
430++virCPUx86FeatureIsMSR(const char *name)
431++{
432++ virCPUx86FeaturePtr feature;
433++ virCPUx86DataIterator iter;
434++ virCPUx86DataItemPtr item;
435++ virCPUx86MapPtr map;
436++
437++ if (!(map = virCPUx86GetMap()))
438++ return false;
439++
440++ if (!(feature = x86FeatureFind(map, name)) &&
441++ !(feature = x86FeatureFindInternal(name)))
442++ return false;
443++
444++ virCPUx86DataIteratorInit(&iter, &feature->data);
445++ while ((item = virCPUx86DataNext(&iter))) {
446++ if (item->type == VIR_CPU_X86_DATA_MSR)
447++ return true;
448++ }
449++
450++ return false;
451++}
452++
453++
454++/**
455++ * virCPUx86FeatureFilterSelectMSR:
456++ *
457++ * This is a callback for functions filtering features in virCPUDef. The result
458++ * will contain only MSR features.
459++ *
460++ * Returns true if @name is an MSR feature, false otherwise.
461++ */
462++bool
463++virCPUx86FeatureFilterSelectMSR(const char *name,
464++ void *opaque ATTRIBUTE_UNUSED)
465++{
466++ return virCPUx86FeatureIsMSR(name);
467++}
468++
469++
470++/**
471++ * virCPUx86FeatureFilterDropMSR:
472++ *
473++ * This is a callback for functions filtering features in virCPUDef. The result
474++ * will not contain any MSR feature.
475++ *
476++ * Returns true if @name is not an MSR feature, false otherwise.
477++ */
478++bool
479++virCPUx86FeatureFilterDropMSR(const char *name,
480++ void *opaque ATTRIBUTE_UNUSED)
481++{
482++ return !virCPUx86FeatureIsMSR(name);
483++}
484++
485++
486+ struct cpuArchDriver cpuDriverX86 = {
487+ .name = "x86",
488+ .arch = archs,
489+--- a/src/cpu/cpu_x86.h
490++++ b/src/cpu/cpu_x86.h
491+@@ -42,6 +42,12 @@ uint32_t virCPUx86DataGetSignature(virCP
492+ int virCPUx86DataSetVendor(virCPUDataPtr cpuData,
493+ const char *vendor);
494+
495++bool virCPUx86FeatureFilterSelectMSR(const char *name,
496++ void *opaque);
497++
498++bool virCPUx86FeatureFilterDropMSR(const char *name,
499++ void *opaque);
500++
501+ int virCPUx86DataAddFeature(virCPUDataPtr cpuData,
502+ const char *name);
503+
504+--- a/src/libvirt_private.syms
505++++ b/src/libvirt_private.syms
506+@@ -1250,7 +1250,8 @@ virCPUx86DataAddFeature;
507+ virCPUx86DataGetSignature;
508+ virCPUx86DataSetSignature;
509+ virCPUx86DataSetVendor;
510+-
511++virCPUx86FeatureFilterDropMSR;
512++virCPUx86FeatureFilterSelectMSR;
513+
514+ # datatypes.h
515+ virConnectClass;
516diff --git a/debian/patches/ubuntu/lp-1828495-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIE.patch b/debian/patches/ubuntu/lp-1828495-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIE.patch
517new file mode 100644
518index 0000000..febdf0f
519--- /dev/null
520+++ b/debian/patches/ubuntu/lp-1828495-cpu_x86-Read-CPU-features-from-IA32_ARCH_CAPABILITIE.patch
521@@ -0,0 +1,93 @@
522+From 56b254dccc96b7339494812c9df07ccf6af3da95 Mon Sep 17 00:00:00 2001
523+From: Jiri Denemark <jdenemar@redhat.com>
524+Date: Fri, 22 Mar 2019 16:52:21 +0100
525+Subject: [PATCH] cpu_x86: Read CPU features from IA32_ARCH_CAPABILITIES MSR
526+MIME-Version: 1.0
527+Content-Type: text/plain; charset=UTF-8
528+Content-Transfer-Encoding: 8bit
529+
530+This is used by the host capabilities code to construct host CPU
531+definition.
532+
533+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
534+Reviewed-by: Ján Tomko <jtomko@redhat.com>
535+
536+Origin: backport, https://libvirt.org/git/?p=libvirt.git;a=commit;h=56b254dc
537+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
538+Last-Update: 2019-08-20
539+
540+---
541+ src/cpu/cpu_x86.c | 22 ++++++++++++++++++++++
542+ 1 file changed, 22 insertions(+)
543+
544+--- a/src/cpu/cpu_x86.c
545++++ b/src/cpu/cpu_x86.c
546+@@ -2392,6 +2392,19 @@ x86Encode(virArch arch,
547+ }
548+
549+
550++static int
551++virCPUx86DataCheckFeature(const virCPUData *data,
552++ const char *name)
553++{
554++ virCPUx86MapPtr map;
555++
556++ if (!(map = virCPUx86GetMap()))
557++ return -1;
558++
559++ return x86FeatureInData(name, &data->data.x86, map);
560++}
561++
562++
563+ #if defined(__i386__) || defined(__x86_64__)
564+ static inline void
565+ cpuidCall(virCPUx86CPUID *cpuid)
566+@@ -2738,6 +2751,28 @@ virCPUx86GetHost(virCPUDefPtr cpu,
567+ cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
568+ goto cleanup;
569+
570++ /* Read the IA32_ARCH_CAPABILITIES MSR (0x10a) if supported.
571++ * This is best effort since there might be no way to read the MSR
572++ * when we are not running as root. */
573++ if (virCPUx86DataCheckFeature(cpuData, "arch-capabilities") == 1) {
574++ uint64_t msr;
575++ unsigned long index = 0x10a;
576++
577++ if (virHostCPUGetMSR(index, &msr) == 0) {
578++ virCPUx86DataItem item = {
579++ .type = VIR_CPU_X86_DATA_MSR,
580++ .data.msr = {
581++ .index = index,
582++ .eax = msr & 0xffffffff,
583++ .edx = msr >> 32,
584++ },
585++ };
586++
587++ if (virCPUx86DataAdd(cpuData, &item) < 0)
588++ return -1;
589++ }
590++ }
591++
592+ ret = x86DecodeCPUData(cpu, cpuData, models);
593+ cpu->microcodeVersion = virHostCPUGetMicrocodeVersion();
594+
595+@@ -2770,19 +2805,6 @@ virCPUx86CheckFeature(const virCPUDef *c
596+ }
597+
598+
599+-static int
600+-virCPUx86DataCheckFeature(const virCPUData *data,
601+- const char *name)
602+-{
603+- virCPUx86MapPtr map;
604+-
605+- if (!(map = virCPUx86GetMap()))
606+- return -1;
607+-
608+- return x86FeatureInData(name, &data->data.x86, map);
609+-}
610+-
611+-
612+ static virCPUDefPtr
613+ virCPUx86Baseline(virCPUDefPtr *cpus,
614+ unsigned int ncpus,
615diff --git a/debian/patches/ubuntu/lp-1828495-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-functi.patch b/debian/patches/ubuntu/lp-1828495-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-functi.patch
616new file mode 100644
617index 0000000..bf7524e
618--- /dev/null
619+++ b/debian/patches/ubuntu/lp-1828495-cpu_x86-Turn-virCPUx86DataIteratorInit-into-a-functi.patch
620@@ -0,0 +1,138 @@
621+From b8e086a570b14b1f83fc07e25df6da758abe7706 Mon Sep 17 00:00:00 2001
622+From: Jiri Denemark <jdenemar@redhat.com>
623+Date: Wed, 19 Jun 2019 21:58:01 +0200
624+Subject: [PATCH] cpu_x86: Turn virCPUx86DataIteratorInit into a function
625+MIME-Version: 1.0
626+Content-Type: text/plain; charset=UTF-8
627+Content-Transfer-Encoding: 8bit
628+
629+Until now, this was a macro usable for direct initialization when a
630+variable is defined. Turning the macro into a function makes it more
631+general.
632+
633+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
634+Reviewed-by: Ján Tomko <jtomko@redhat.com>
635+
636+Origin: upstream, https://libvirt.org/git/?p=libvirt.git;a=commit;h=b8e086a5
637+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
638+Last-Update: 2019-08-20
639+
640+---
641+ src/cpu/cpu_x86.c | 34 ++++++++++++++++++++++++----------
642+ 1 file changed, 24 insertions(+), 10 deletions(-)
643+
644+diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
645+index b6a94d483a..6eef5cef00 100644
646+--- a/src/cpu/cpu_x86.c
647++++ b/src/cpu/cpu_x86.c
648+@@ -189,8 +189,13 @@ struct _virCPUx86DataIterator {
649+ };
650+
651+
652+-#define virCPUx86DataIteratorInit(data) \
653+- { data, -1 }
654++static void
655++virCPUx86DataIteratorInit(virCPUx86DataIteratorPtr iterator,
656++ const virCPUx86Data *data)
657++{
658++ virCPUx86DataIterator iter = { data, -1 };
659++ *iterator = iter;
660++}
661+
662+
663+ static bool
664+@@ -540,9 +545,10 @@ static int
665+ x86DataAdd(virCPUx86Data *data1,
666+ const virCPUx86Data *data2)
667+ {
668+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit(data2);
669++ virCPUx86DataIterator iter;
670+ virCPUx86DataItemPtr item;
671+
672++ virCPUx86DataIteratorInit(&iter, data2);
673+ while ((item = virCPUx86DataNext(&iter))) {
674+ if (virCPUx86DataAddItem(data1, item) < 0)
675+ return -1;
676+@@ -556,10 +562,11 @@ static void
677+ x86DataSubtract(virCPUx86Data *data1,
678+ const virCPUx86Data *data2)
679+ {
680+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit(data1);
681++ virCPUx86DataIterator iter;
682+ virCPUx86DataItemPtr item1;
683+ virCPUx86DataItemPtr item2;
684+
685++ virCPUx86DataIteratorInit(&iter, data1);
686+ while ((item1 = virCPUx86DataNext(&iter))) {
687+ item2 = virCPUx86DataGet(data2, item1);
688+ virCPUx86DataItemClearBits(item1, item2);
689+@@ -571,10 +578,11 @@ static void
690+ x86DataIntersect(virCPUx86Data *data1,
691+ const virCPUx86Data *data2)
692+ {
693+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit(data1);
694++ virCPUx86DataIterator iter;
695+ virCPUx86DataItemPtr item1;
696+ virCPUx86DataItemPtr item2;
697+
698++ virCPUx86DataIteratorInit(&iter, data1);
699+ while ((item1 = virCPUx86DataNext(&iter))) {
700+ item2 = virCPUx86DataGet(data2, item1);
701+ if (item2)
702+@@ -588,8 +596,9 @@ x86DataIntersect(virCPUx86Data *data1,
703+ static bool
704+ x86DataIsEmpty(virCPUx86Data *data)
705+ {
706+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit(data);
707++ virCPUx86DataIterator iter;
708+
709++ virCPUx86DataIteratorInit(&iter, data);
710+ return !virCPUx86DataNext(&iter);
711+ }
712+
713+@@ -598,10 +607,11 @@ static bool
714+ x86DataIsSubset(const virCPUx86Data *data,
715+ const virCPUx86Data *subset)
716+ {
717+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit((virCPUx86Data *)subset);
718++ virCPUx86DataIterator iter;
719+ const virCPUx86DataItem *item;
720+ const virCPUx86DataItem *itemSubset;
721+
722++ virCPUx86DataIteratorInit(&iter, subset);
723+ while ((itemSubset = virCPUx86DataNext(&iter))) {
724+ if (!(item = virCPUx86DataGet(data, itemSubset)) ||
725+ !virCPUx86DataItemMatchMasked(item, itemSubset))
726+@@ -1314,11 +1324,13 @@ x86ModelCompare(virCPUx86ModelPtr model1,
727+ virCPUx86ModelPtr model2)
728+ {
729+ virCPUx86CompareResult result = EQUAL;
730+- virCPUx86DataIterator iter1 = virCPUx86DataIteratorInit(&model1->data);
731+- virCPUx86DataIterator iter2 = virCPUx86DataIteratorInit(&model2->data);
732++ virCPUx86DataIterator iter1;
733++ virCPUx86DataIterator iter2;
734+ virCPUx86DataItemPtr item1;
735+ virCPUx86DataItemPtr item2;
736+
737++ virCPUx86DataIteratorInit(&iter1, &model1->data);
738++ virCPUx86DataIteratorInit(&iter2, &model2->data);
739+ while ((item1 = virCPUx86DataNext(&iter1))) {
740+ virCPUx86CompareResult match = SUPERSET;
741+
742+@@ -1624,10 +1636,12 @@ virCPUx86GetMap(void)
743+ static char *
744+ virCPUx86DataFormat(const virCPUData *data)
745+ {
746+- virCPUx86DataIterator iter = virCPUx86DataIteratorInit(&data->data.x86);
747++ virCPUx86DataIterator iter;
748+ virCPUx86DataItemPtr item;
749+ virBuffer buf = VIR_BUFFER_INITIALIZER;
750+
751++ virCPUx86DataIteratorInit(&iter, &data->data.x86);
752++
753+ virBufferAddLit(&buf, "<cpudata arch='x86'>\n");
754+ while ((item = virCPUx86DataNext(&iter))) {
755+ virCPUx86CPUIDPtr cpuid;
756+--
757+2.22.0
758+
759diff --git a/debian/patches/ubuntu/lp-1828495-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch b/debian/patches/ubuntu/lp-1828495-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch
760new file mode 100644
761index 0000000..bfbd72f
762--- /dev/null
763+++ b/debian/patches/ubuntu/lp-1828495-qemu-Drop-MSR-features-from-host-model-with-old-QEMU.patch
764@@ -0,0 +1,83 @@
765+From 2674d00ed484091faf2b6e6b1efe58ee9a72b96b Mon Sep 17 00:00:00 2001
766+From: Jiri Denemark <jdenemar@redhat.com>
767+Date: Wed, 19 Jun 2019 22:22:09 +0200
768+Subject: [PATCH] qemu: Drop MSR features from host-model with old QEMU
769+MIME-Version: 1.0
770+Content-Type: text/plain; charset=UTF-8
771+Content-Transfer-Encoding: 8bit
772+
773+With QEMU versions which lack "unavailable-features" we use CPUID based
774+detection of features which were enabled or disabled once QEMU starts.
775+Thus using MSR features with host-model would result in all of them
776+being marked as disabled in the active domain definition even though
777+QEMU did not actually disable them.
778+
779+Let's make sure we add MSR features to host-model only when
780+"unavailable-features" property is supported by QEMU.
781+
782+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
783+Reviewed-by: Ján Tomko <jtomko@redhat.com>
784+
785+Origin: upstream, https://libvirt.org/git/?p=libvirt.git;a=commit;h=2674d00e
786+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
787+Last-Update: 2019-08-20
788+
789+---
790+ src/qemu/qemu_capabilities.c | 15 +++++++++++++++
791+ tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml | 1 -
792+ tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml | 1 -
793+ 3 files changed, 15 insertions(+), 2 deletions(-)
794+
795+diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
796+index 4134f319ac..02e84edc15 100644
797+--- a/src/qemu/qemu_capabilities.c
798++++ b/src/qemu/qemu_capabilities.c
799+@@ -3193,6 +3193,21 @@ virQEMUCapsInitHostCPUModel(virQEMUCapsPtr qemuCaps,
800+ goto error;
801+ }
802+
803++ if (ARCH_IS_X86(qemuCaps->arch) &&
804++ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES)) {
805++ if (cpu &&
806++ virCPUDefFilterFeatures(cpu, virCPUx86FeatureFilterDropMSR, NULL) < 0)
807++ goto error;
808++
809++ if (migCPU &&
810++ virCPUDefFilterFeatures(migCPU, virCPUx86FeatureFilterDropMSR, NULL) < 0)
811++ goto error;
812++
813++ if (fullCPU &&
814++ virCPUDefFilterFeatures(fullCPU, virCPUx86FeatureFilterDropMSR, NULL) < 0)
815++ goto error;
816++ }
817++
818+ virQEMUCapsSetHostModel(qemuCaps, type, cpu, migCPU, fullCPU);
819+
820+ cleanup:
821+diff --git a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
822+index dfd186afba..ca3baab88c 100644
823+--- a/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
824++++ b/tests/domaincapsschemadata/qemu_3.1.0.x86_64.xml
825+@@ -42,7 +42,6 @@
826+ <feature policy='require' name='xsaves'/>
827+ <feature policy='require' name='pdpe1gb'/>
828+ <feature policy='require' name='invtsc'/>
829+- <feature policy='require' name='skip-l1dfl-vmentry'/>
830+ </mode>
831+ <mode name='custom' supported='yes'>
832+ <model usable='yes'>qemu64</model>
833+diff --git a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
834+index 36f6f1e94d..cba841d844 100644
835+--- a/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
836++++ b/tests/domaincapsschemadata/qemu_4.0.0.x86_64.xml
837+@@ -42,7 +42,6 @@
838+ <feature policy='require' name='xsaves'/>
839+ <feature policy='require' name='pdpe1gb'/>
840+ <feature policy='require' name='invtsc'/>
841+- <feature policy='require' name='skip-l1dfl-vmentry'/>
842+ </mode>
843+ <mode name='custom' supported='yes'>
844+ <model usable='yes'>qemu64</model>
845+--
846+2.22.0
847+
848diff --git a/debian/patches/ubuntu/lp-1828495-qemu-Forbid-MSR-features-with-old-QEMU.patch b/debian/patches/ubuntu/lp-1828495-qemu-Forbid-MSR-features-with-old-QEMU.patch
849new file mode 100644
850index 0000000..8701e10
851--- /dev/null
852+++ b/debian/patches/ubuntu/lp-1828495-qemu-Forbid-MSR-features-with-old-QEMU.patch
853@@ -0,0 +1,77 @@
854+From 8eb4a89f5f7973f50aa8b6fa0b1a45b825dda208 Mon Sep 17 00:00:00 2001
855+From: Jiri Denemark <jdenemar@redhat.com>
856+Date: Wed, 19 Jun 2019 21:59:49 +0200
857+Subject: [PATCH] qemu: Forbid MSR features with old QEMU
858+MIME-Version: 1.0
859+Content-Type: text/plain; charset=UTF-8
860+Content-Transfer-Encoding: 8bit
861+
862+Without "unavailable-features" CPU property we cannot properly detect
863+whether a specific MSR feature we asked for (either explicitly or
864+implicitly via a CPU model) was disabled by QEMU for some reason.
865+Because this could break migration, snapshots, and save/restore
866+operaions, it's better to just forbid any use of MSR features with QEMU
867+which lacks "unavailable-features" CPU property.
868+
869+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
870+Reviewed-by: Ján Tomko <jtomko@redhat.com>
871+
872+Origin: upstream, https://libvirt.org/git/?p=libvirt.git;a=commit;h=8eb4a89f
873+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
874+Last-Update: 2019-08-20
875+
876+---
877+ src/qemu/qemu_process.c | 30 +++++++++++++++++++++++++++---
878+ 1 file changed, 27 insertions(+), 3 deletions(-)
879+
880+diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
881+index 28aa34c62d..c9f8a0f311 100644
882+--- a/src/qemu/qemu_process.c
883++++ b/src/qemu/qemu_process.c
884+@@ -59,6 +59,7 @@
885+ #include "qemu_firmware.h"
886+
887+ #include "cpu/cpu.h"
888++#include "cpu/cpu_x86.h"
889+ #include "datatypes.h"
890+ #include "virlog.h"
891+ #include "virerror.h"
892+@@ -5406,9 +5407,32 @@ qemuProcessStartValidate(virQEMUDriverPtr driver,
893+ if (qemuProcessStartValidateShmem(vm) < 0)
894+ return -1;
895+
896+- if (vm->def->cpu &&
897+- virCPUValidateFeatures(vm->def->os.arch, vm->def->cpu) < 0)
898+- return -1;
899++ if (vm->def->cpu) {
900++ if (virCPUValidateFeatures(vm->def->os.arch, vm->def->cpu) < 0)
901++ return -1;
902++
903++ if (ARCH_IS_X86(vm->def->os.arch) &&
904++ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES)) {
905++ VIR_AUTOSTRINGLIST features = NULL;
906++ int n;
907++
908++ if ((n = virCPUDefCheckFeatures(vm->def->cpu,
909++ virCPUx86FeatureFilterSelectMSR,
910++ NULL,
911++ &features)) < 0)
912++ return -1;
913++
914++ if (n > 0) {
915++ VIR_AUTOFREE(char *) str = NULL;
916++
917++ str = virStringListJoin((const char **)features, ", ");
918++ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
919++ _("Some features cannot be reliably used "
920++ "with this QEMU: %s"), str);
921++ return -1;
922++ }
923++ }
924++ }
925+
926+ if (qemuProcessStartValidateDisks(vm, qemuCaps) < 0)
927+ return -1;
928+--
929+2.22.0
930+
931diff --git a/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-max-x86_64-cpu-type.patch b/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-max-x86_64-cpu-type.patch
932new file mode 100644
933index 0000000..cfd00e3
934--- /dev/null
935+++ b/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-max-x86_64-cpu-type.patch
936@@ -0,0 +1,128 @@
937+From 2a4c23210674b453f91569f0f4b9fd5ebe8d7906 Mon Sep 17 00:00:00 2001
938+From: Jiri Denemark <jdenemar@redhat.com>
939+Date: Mon, 10 Jun 2019 16:46:10 +0200
940+Subject: [PATCH] qemu: Probe for max-x86_64-cpu type
941+MIME-Version: 1.0
942+Content-Type: text/plain; charset=UTF-8
943+Content-Transfer-Encoding: 8bit
944+
945+We will use it to check whether QEMU supports a specific CPU property.
946+
947+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
948+Reviewed-by: Ján Tomko <jtomko@redhat.com>
949+
950+Origin: backport, https://libvirt.org/git/?p=libvirt.git;a=commit;h=2a4c2321
951+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
952+Last-Update: 2019-08-20
953+
954+---
955+ src/qemu/qemu_capabilities.c | 2 ++
956+ src/qemu/qemu_capabilities.h | 1 +
957+ tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 +
958+ tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml | 1 +
959+ tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 +
960+ tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
961+ tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml | 1 +
962+ tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml | 1 +
963+ tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml | 1 +
964+ tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 +
965+ 10 files changed, 11 insertions(+)
966+
967+--- a/src/qemu/qemu_capabilities.c
968++++ b/src/qemu/qemu_capabilities.c
969+@@ -525,6 +525,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
970+ "virtio-pci-non-transitional",
971+ "overcommit",
972+ "query-current-machine",
973++ "x86-max-cpu",
974+ );
975+
976+
977+@@ -1113,6 +1114,7 @@ struct virQEMUCapsStringFlags virQEMUCap
978+ { "virtio-scsi-pci-non-transitional", QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL },
979+ { "virtio-serial-pci-transitional", QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL },
980+ { "virtio-serial-pci-non-transitional", QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL },
981++ { "max-x86_64-cpu", QEMU_CAPS_X86_MAX_CPU },
982+ };
983+
984+ static struct virQEMUCapsStringFlags virQEMUCapsDevicePropsVirtioBalloon[] = {
985+--- a/src/qemu/qemu_capabilities.h
986++++ b/src/qemu/qemu_capabilities.h
987+@@ -507,6 +507,7 @@ typedef enum { /* virQEMUCapsFlags group
988+ QEMU_CAPS_VIRTIO_PCI_TRANSITIONAL, /* virtio *-pci-{non-}transitional devices */
989+ QEMU_CAPS_OVERCOMMIT, /* -overcommit */
990+ QEMU_CAPS_QUERY_CURRENT_MACHINE, /* query-current-machine command */
991++ QEMU_CAPS_X86_MAX_CPU, /* max-x86_64-cpu type exists */
992+
993+ QEMU_CAPS_LAST /* this must always be the last item */
994+ } virQEMUCapsFlags;
995+--- a/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
996++++ b/tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml
997+@@ -180,6 +180,7 @@
998+ <flag name='mch'/>
999+ <flag name='egl-headless'/>
1000+ <flag name='iothread.poll-max-ns'/>
1001++ <flag name='x86-max-cpu'/>
1002+ <version>2010000</version>
1003+ <kvmVersion>0</kvmVersion>
1004+ <microcodeVersion>43100805</microcodeVersion>
1005+--- a/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml
1006++++ b/tests/qemucapabilitiesdata/caps_2.11.0.x86_64.xml
1007+@@ -186,6 +186,7 @@
1008+ <flag name='mch.extended-tseg-mbytes'/>
1009+ <flag name='egl-headless'/>
1010+ <flag name='iothread.poll-max-ns'/>
1011++ <flag name='x86-max-cpu'/>
1012+ <version>2011000</version>
1013+ <kvmVersion>0</kvmVersion>
1014+ <microcodeVersion>43100806</microcodeVersion>
1015+--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
1016++++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml
1017+@@ -194,6 +194,7 @@
1018+ <flag name='memory-backend-memfd.hugetlb'/>
1019+ <flag name='iothread.poll-max-ns'/>
1020+ <flag name='memory-backend-file.align'/>
1021++ <flag name='x86-max-cpu'/>
1022+ <version>2011090</version>
1023+ <kvmVersion>0</kvmVersion>
1024+ <microcodeVersion>43100807</microcodeVersion>
1025+--- a/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
1026++++ b/tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml
1027+@@ -174,6 +174,7 @@
1028+ <flag name='vhost-vsock'/>
1029+ <flag name='mch'/>
1030+ <flag name='iothread.poll-max-ns'/>
1031++ <flag name='x86-max-cpu'/>
1032+ <version>2009000</version>
1033+ <kvmVersion>0</kvmVersion>
1034+ <microcodeVersion>43100765</microcodeVersion>
1035+--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
1036++++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml
1037+@@ -197,6 +197,7 @@
1038+ <flag name='iothread.poll-max-ns'/>
1039+ <flag name='memory-backend-file.align'/>
1040+ <flag name='nvdimm.unarmed'/>
1041++ <flag name='x86-max-cpu'/>
1042+ <version>3000000</version>
1043+ <kvmVersion>0</kvmVersion>
1044+ <microcodeVersion>43100757</microcodeVersion>
1045+--- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml
1046++++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.xml
1047+@@ -200,6 +200,7 @@
1048+ <flag name='memory-backend-file.pmem'/>
1049+ <flag name='nvdimm.unarmed'/>
1050+ <flag name='overcommit'/>
1051++ <flag name='x86-max-cpu'/>
1052+ <version>3000092</version>
1053+ <kvmVersion>0</kvmVersion>
1054+ <microcodeVersion>43100758</microcodeVersion>
1055+--- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml
1056++++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.xml
1057+@@ -202,6 +202,7 @@
1058+ <flag name='virtio-pci-non-transitional'/>
1059+ <flag name='overcommit'/>
1060+ <flag name='query-current-machine'/>
1061++ <flag name='x86-max-cpu'/>
1062+ <version>4000000</version>
1063+ <kvmVersion>0</kvmVersion>
1064+ <microcodeVersion>43100758</microcodeVersion>
1065diff --git a/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-unavailable-features-CPU-property.patch b/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-unavailable-features-CPU-property.patch
1066new file mode 100644
1067index 0000000..d13325b
1068--- /dev/null
1069+++ b/debian/patches/ubuntu/lp-1828495-qemu-Probe-for-unavailable-features-CPU-property.patch
1070@@ -0,0 +1,5196 @@
1071+From 0d254bce4ec6fd62c0277d24e28bf018a4c6cb37 Mon Sep 17 00:00:00 2001
1072+From: Jiri Denemark <jdenemar@redhat.com>
1073+Date: Mon, 10 Jun 2019 16:49:22 +0200
1074+Subject: [PATCH] qemu: Probe for "unavailable-features" CPU property
1075+MIME-Version: 1.0
1076+Content-Type: text/plain; charset=UTF-8
1077+Content-Transfer-Encoding: 8bit
1078+
1079+It is similar to "filtered-features" property, which reports CPUID bits
1080+corresponding to disabled features, but more general. The
1081+"unavailable-features" property supports both CPUID and MSR features by
1082+listing their names.
1083+
1084+Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
1085+Reviewed-by: Ján Tomko <jtomko@redhat.com>
1086+
1087+Origin: backport, https://libvirt.org/git/?p=libvirt.git;a=commit;h=0d254bce
1088+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828495
1089+Last-Update: 2019-08-20
1090+
1091+---
1092+ src/qemu/qemu_capabilities.c | 8 +
1093+ src/qemu/qemu_capabilities.h | 1 +
1094+ .../caps_2.12.0.x86_64.replies | 1078 ++++++++++++++-
1095+ .../caps_3.0.0.x86_64.replies | 1110 +++++++++++++++-
1096+ .../caps_3.1.0.x86_64.replies | 1158 +++++++++++++++-
1097+ .../caps_4.0.0.x86_64.replies | 1174 +++++++++++++++-
1098+ 8 files changed, 5592 insertions(+), 120 deletions(-)
1099+
1100+--- a/src/qemu/qemu_capabilities.c
1101++++ b/src/qemu/qemu_capabilities.c
1102+@@ -526,6 +526,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
1103+ "overcommit",
1104+ "query-current-machine",
1105+ "x86-max-cpu",
1106++ "cpu-unavailable-features",
1107+ );
1108+
1109+
1110+@@ -1393,6 +1394,10 @@ static struct virQEMUCapsStringFlags vir
1111+ { "hugetlb", QEMU_CAPS_OBJECT_MEMORY_MEMFD_HUGETLB },
1112+ };
1113+
1114++static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsMaxX86CPU[] = {
1115++ { "unavailable-features", QEMU_CAPS_CPU_UNAVAILABLE_FEATURES },
1116++};
1117++
1118+ static virQEMUCapsObjectTypeProps virQEMUCapsObjectProps[] = {
1119+ { "memory-backend-file", virQEMUCapsObjectPropsMemoryBackendFile,
1120+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendFile),
1121+@@ -1400,6 +1405,9 @@ static virQEMUCapsObjectTypeProps virQEM
1122+ { "memory-backend-memfd", virQEMUCapsObjectPropsMemoryBackendMemfd,
1123+ ARRAY_CARDINALITY(virQEMUCapsObjectPropsMemoryBackendMemfd),
1124+ QEMU_CAPS_OBJECT_MEMORY_MEMFD },
1125++ { "max-x86_64-cpu", virQEMUCapsObjectPropsMaxX86CPU,
1126++ ARRAY_CARDINALITY(virQEMUCapsObjectPropsMaxX86CPU),
1127++ QEMU_CAPS_X86_MAX_CPU },
1128+ };
1129+
1130+ static struct virQEMUCapsStringFlags virQEMUCapsMachinePropsPSeries[] = {
1131+--- a/src/qemu/qemu_capabilities.h
1132++++ b/src/qemu/qemu_capabilities.h
1133+@@ -508,6 +508,7 @@ typedef enum { /* virQEMUCapsFlags group
1134+ QEMU_CAPS_OVERCOMMIT, /* -overcommit */
1135+ QEMU_CAPS_QUERY_CURRENT_MACHINE, /* query-current-machine command */
1136+ QEMU_CAPS_X86_MAX_CPU, /* max-x86_64-cpu type exists */
1137++ QEMU_CAPS_CPU_UNAVAILABLE_FEATURES, /* "unavailable-features" CPU property */
1138+
1139+ QEMU_CAPS_LAST /* this must always be the last item */
1140+ } virQEMUCapsFlags;
1141+--- a/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
1142++++ b/tests/qemucapabilitiesdata/caps_2.12.0.x86_64.replies
1143+@@ -4762,11 +4762,1041 @@
1144+ }
1145+
1146+ {
1147+- "execute": "query-machines",
1148++ "execute": "qom-list-properties",
1149++ "arguments": {
1150++ "typename": "max-x86_64-cpu"
1151++ },
1152++ "id": "libvirt-37"
1153++}
1154++
1155++{
1156++ "return": [
1157++ {
1158++ "name": "min-xlevel2",
1159++ "type": "uint32"
1160++ },
1161++ {
1162++ "name": "vendor",
1163++ "type": "string"
1164++ },
1165++ {
1166++ "name": "gfni",
1167++ "type": "bool"
1168++ },
1169++ {
1170++ "name": "clwb",
1171++ "type": "bool"
1172++ },
1173++ {
1174++ "name": "nx",
1175++ "type": "bool"
1176++ },
1177++ {
1178++ "name": "x2apic",
1179++ "type": "bool"
1180++ },
1181++ {
1182++ "name": "kvmclock-stable-bit",
1183++ "type": "bool"
1184++ },
1185++ {
1186++ "name": "vmcb_clean",
1187++ "type": "bool"
1188++ },
1189++ {
1190++ "name": "min-level",
1191++ "type": "uint32"
1192++ },
1193++ {
1194++ "name": "fxsr-opt",
1195++ "type": "bool"
1196++ },
1197++ {
1198++ "name": "skinit",
1199++ "type": "bool"
1200++ },
1201++ {
1202++ "name": "avx",
1203++ "type": "bool"
1204++ },
1205++ {
1206++ "name": "3dnowext",
1207++ "type": "bool"
1208++ },
1209++ {
1210++ "name": "hv-crash",
1211++ "type": "bool"
1212++ },
1213++ {
1214++ "name": "nodeid_msr",
1215++ "type": "bool"
1216++ },
1217++ {
1218++ "name": "hypervisor",
1219++ "type": "bool"
1220++ },
1221++ {
1222++ "name": "enforce",
1223++ "type": "bool"
1224++ },
1225++ {
1226++ "name": "stepping",
1227++ "type": "int"
1228++ },
1229++ {
1230++ "name": "sse4_2",
1231++ "type": "bool"
1232++ },
1233++ {
1234++ "name": "sse4_1",
1235++ "type": "bool"
1236++ },
1237++ {
1238++ "name": "x-hv-max-vps",
1239++ "type": "int32"
1240++ },
1241++ {
1242++ "name": "hv-frequencies",
1243++ "type": "bool"
1244++ },
1245++ {
1246++ "name": "kvm-hint-dedicated",
1247++ "type": "bool"
1248++ },
1249++ {
1250++ "name": "cmp_legacy",
1251++ "type": "bool"
1252++ },
1253++ {
1254++ "name": "tm2",
1255++ "type": "bool"
1256++ },
1257++ {
1258++ "name": "smx",
1259++ "type": "bool"
1260++ },
1261++ {
1262++ "name": "host-cache-info",
1263++ "type": "bool"
1264++ },
1265++ {
1266++ "name": "hv-vendor-id",
1267++ "type": "str"
1268++ },
1269++ {
1270++ "name": "movbe",
1271++ "type": "bool"
1272++ },
1273++ {
1274++ "name": "3dnowprefetch",
1275++ "type": "bool"
1276++ },
1277++ {
1278++ "name": "mtrr",
1279++ "type": "bool"
1280++ },
1281++ {
1282++ "name": "wdt",
1283++ "type": "bool"
1284++ },
1285++ {
1286++ "name": "thread-id",
1287++ "type": "int32"
1288++ },
1289++ {
1290++ "name": "aes",
1291++ "type": "bool"
1292++ },
1293++ {
1294++ "name": "apic-id",
1295++ "type": "uint32"
1296++ },
1297++ {
1298++ "name": "lm",
1299++ "type": "bool"
1300++ },
1301++ {
1302++ "name": "family",
1303++ "type": "int"
1304++ },
1305++ {
1306++ "name": "tsc-adjust",
1307++ "type": "bool"
1308++ },
1309++ {
1310++ "name": "pfthreshold",
1311++ "type": "bool"
1312++ },
1313++ {
1314++ "name": "ospke",
1315++ "type": "bool"
1316++ },
1317++ {
1318++ "name": "kvm-no-smi-migration",
1319++ "type": "bool"
1320++ },
1321++ {
1322++ "name": "pse",
1323++ "type": "bool"
1324++ },
1325++ {
1326++ "name": "filtered-features",
1327++ "type": "X86CPUFeatureWordInfo"
1328++ },
1329++ {
1330++ "name": "hv-vpindex",
1331++ "type": "bool"
1332++ },
1333++ {
1334++ "name": "adx",
1335++ "type": "bool"
1336++ },
1337++ {
1338++ "name": "avx512bitalg",
1339++ "type": "bool"
1340++ },
1341++ {
1342++ "name": "i64",
1343++ "type": "bool"
1344++ },
1345++ {
1346++ "name": "vaes",
1347++ "type": "bool"
1348++ },
1349++ {
1350++ "name": "ia64",
1351++ "type": "bool"
1352++ },
1353++ {
1354++ "name": "nodeid-msr",
1355++ "type": "bool"
1356++ },
1357++ {
1358++ "name": "ibpb",
1359++ "type": "bool"
1360++ },
1361++ {
1362++ "name": "hv-synic",
1363++ "type": "bool"
1364++ },
1365++ {
1366++ "name": "ibs",
1367++ "type": "bool"
1368++ },
1369++ {
1370++ "name": "kvm_mmu",
1371++ "type": "bool"
1372++ },
1373++ {
1374++ "name": "tcg-cpuid",
1375++ "type": "bool"
1376++ },
1377++ {
1378++ "name": "nrip_save",
1379++ "type": "bool"
1380++ },
1381++ {
1382++ "name": "kvm_nopiodelay",
1383++ "type": "bool"
1384++ },
1385++ {
1386++ "name": "lbrv",
1387++ "type": "bool"
1388++ },
1389++ {
1390++ "name": "rdtscp",
1391++ "type": "bool"
1392++ },
1393++ {
1394++ "name": "memory",
1395++ "type": "link<qemu:memory-region>"
1396++ },
1397++ {
1398++ "name": "avx512vbmi2",
1399++ "type": "bool"
1400++ },
1401++ {
1402++ "name": "ace2-en",
1403++ "type": "bool"
1404++ },
1405++ {
1406++ "name": "invtsc",
1407++ "type": "bool"
1408++ },
1409++ {
1410++ "name": "sse4.2",
1411++ "type": "bool"
1412++ },
1413++ {
1414++ "name": "sse4.1",
1415++ "type": "bool"
1416++ },
1417++ {
1418++ "name": "pbe",
1419++ "type": "bool"
1420++ },
1421++ {
1422++ "name": "rdrand",
1423++ "type": "bool"
1424++ },
1425++ {
1426++ "name": "socket-id",
1427++ "type": "int32"
1428++ },
1429++ {
1430++ "name": "hotpluggable",
1431++ "type": "bool"
1432++ },
1433++ {
1434++ "name": "kvm-steal-time",
1435++ "type": "bool"
1436++ },
1437++ {
1438++ "name": "l3-cache",
1439++ "type": "bool"
1440++ },
1441++ {
1442++ "name": "vmware-cpuid-freq",
1443++ "type": "bool"
1444++ },
1445++ {
1446++ "name": "xop",
1447++ "type": "bool"
1448++ },
1449++ {
1450++ "name": "tsc-frequency",
1451++ "type": "int"
1452++ },
1453++ {
1454++ "name": "fill-mtrr-mask",
1455++ "type": "bool"
1456++ },
1457++ {
1458++ "name": "core-id",
1459++ "type": "int32"
1460++ },
1461++ {
1462++ "name": "intel-pt",
1463++ "type": "bool"
1464++ },
1465++ {
1466++ "name": "pat",
1467++ "type": "bool"
1468++ },
1469++ {
1470++ "name": "pcid",
1471++ "type": "bool"
1472++ },
1473++ {
1474++ "name": "pclmulqdq",
1475++ "type": "bool"
1476++ },
1477++ {
1478++ "name": "sse4-2",
1479++ "type": "bool"
1480++ },
1481++ {
1482++ "name": "sse4-1",
1483++ "type": "bool"
1484++ },
1485++ {
1486++ "name": "sha-ni",
1487++ "type": "bool"
1488++ },
1489++ {
1490++ "name": "cmov",
1491++ "type": "bool"
1492++ },
1493++ {
1494++ "name": "pae",
1495++ "type": "bool"
1496++ },
1497++ {
1498++ "name": "smep",
1499++ "type": "bool"
1500++ },
1501++ {
1502++ "name": "abm",
1503++ "type": "bool"
1504++ },
1505++ {
1506++ "name": "xstore",
1507++ "type": "bool"
1508++ },
1509++ {
1510++ "name": "tsc_adjust",
1511++ "type": "bool"
1512++ },
1513++ {
1514++ "name": "type",
1515++ "type": "string"
1516++ },
1517++ {
1518++ "name": "kvm-asyncpf",
1519++ "type": "bool"
1520++ },
1521++ {
1522++ "name": "min-xlevel",
1523++ "type": "uint32"
1524++ },
1525++ {
1526++ "name": "pdpe1gb",
1527++ "type": "bool"
1528++ },
1529++ {
1530++ "name": "kvm-mmu",
1531++ "type": "bool"
1532++ },
1533++ {
1534++ "name": "kvm-pv-unhalt",
1535++ "type": "bool"
1536++ },
1537++ {
1538++ "name": "avx512f",
1539++ "type": "bool"
1540++ },
1541++ {
1542++ "name": "avx512vbmi",
1543++ "type": "bool"
1544++ },
1545++ {
1546++ "name": "avx512-4vnniw",
1547++ "type": "bool"
1548++ },
1549++ {
1550++ "name": "xd",
1551++ "type": "bool"
1552++ },
1553++ {
1554++ "name": "mmxext",
1555++ "type": "bool"
1556++ },
1557++ {
1558++ "name": "decodeassists",
1559++ "type": "bool"
1560++ },
1561++ {
1562++ "name": "ht",
1563++ "type": "bool"
1564++ },
1565++ {
1566++ "name": "xsave",
1567++ "type": "bool"
1568++ },
1569++ {
1570++ "name": "perfctr_core",
1571++ "type": "bool"
1572++ },
1573++ {
1574++ "name": "feature-words",
1575++ "type": "X86CPUFeatureWordInfo"
1576++ },
1577++ {
1578++ "name": "migratable",
1579++ "type": "bool"
1580++ },
1581++ {
1582++ "name": "3dnow",
1583++ "type": "bool"
1584++ },
1585++ {
1586++ "name": "spec-ctrl",
1587++ "type": "bool"
1588++ },
1589++ {
1590++ "name": "model",
1591++ "type": "int"
1592++ },
1593++ {
1594++ "name": "nrip-save",
1595++ "type": "bool"
1596++ },
1597++ {
1598++ "name": "lwp",
1599++ "type": "bool"
1600++ },
1601++ {
1602++ "name": "xstore-en",
1603++ "type": "bool"
1604++ },
1605++ {
1606++ "name": "avx512vl",
1607++ "type": "bool"
1608++ },
1609++ {
1610++ "name": "kvm_pv_unhalt",
1611++ "type": "bool"
1612++ },
1613++ {
1614++ "name": "bmi2",
1615++ "type": "bool"
1616++ },
1617++ {
1618++ "name": "bmi1",
1619++ "type": "bool"
1620++ },
1621++ {
1622++ "name": "la57",
1623++ "type": "bool"
1624++ },
1625++ {
1626++ "name": "ffxsr",
1627++ "type": "bool"
1628++ },
1629++ {
1630++ "name": "vmcb-clean",
1631++ "type": "bool"
1632++ },
1633++ {
1634++ "name": "pause-filter",
1635++ "type": "bool"
1636++ },
1637++ {
1638++ "name": "pni",
1639++ "type": "bool"
1640++ },
1641++ {
1642++ "name": "kvm_steal_time",
1643++ "type": "bool"
1644++ },
1645++ {
1646++ "name": "svm_lock",
1647++ "type": "bool"
1648++ },
1649++ {
1650++ "name": "pse36",
1651++ "type": "bool"
1652++ },
1653++ {
1654++ "name": "hv-stimer",
1655++ "type": "bool"
1656++ },
1657++ {
1658++ "name": "host-phys-bits",
1659++ "type": "bool"
1660++ },
1661++ {
1662++ "name": "extapic",
1663++ "type": "bool"
1664++ },
1665++ {
1666++ "name": "hv-spinlocks",
1667++ "type": "int"
1668++ },
1669++ {
1670++ "name": "pmu",
1671++ "type": "bool"
1672++ },
1673++ {
1674++ "name": "pmm",
1675++ "type": "bool"
1676++ },
1677++ {
1678++ "name": "vpclmulqdq",
1679++ "type": "bool"
1680++ },
1681++ {
1682++ "name": "avx512-vpopcntdq",
1683++ "type": "bool"
1684++ },
1685++ {
1686++ "name": "avx512er",
1687++ "type": "bool"
1688++ },
1689++ {
1690++ "name": "pdcm",
1691++ "type": "bool"
1692++ },
1693++ {
1694++ "name": "svm",
1695++ "type": "bool"
1696++ },
1697++ {
1698++ "name": "apic",
1699++ "type": "bool"
1700++ },
1701++ {
1702++ "name": "xcrypt-en",
1703++ "type": "bool"
1704++ },
1705++ {
1706++ "name": "cr8legacy",
1707++ "type": "bool"
1708++ },
1709++ {
1710++ "name": "fma4",
1711++ "type": "bool"
1712++ },
1713++ {
1714++ "name": "erms",
1715++ "type": "bool"
1716++ },
1717++ {
1718++ "name": "msr",
1719++ "type": "bool"
1720++ },
1721++ {
1722++ "name": "ds_cpl",
1723++ "type": "bool"
1724++ },
1725++ {
1726++ "name": "xlevel",
1727++ "type": "uint32"
1728++ },
1729++ {
1730++ "name": "hotplugged",
1731++ "type": "bool"
1732++ },
1733++ {
1734++ "name": "hv-relaxed",
1735++ "type": "bool"
1736++ },
1737++ {
1738++ "name": "perfctr-core",
1739++ "type": "bool"
1740++ },
1741++ {
1742++ "name": "sep",
1743++ "type": "bool"
1744++ },
1745++ {
1746++ "name": "smap",
1747++ "type": "bool"
1748++ },
1749++ {
1750++ "name": "sse3",
1751++ "type": "bool"
1752++ },
1753++ {
1754++ "name": "avx512dq",
1755++ "type": "bool"
1756++ },
1757++ {
1758++ "name": "ssse3",
1759++ "type": "bool"
1760++ },
1761++ {
1762++ "name": "pmm-en",
1763++ "type": "bool"
1764++ },
1765++ {
1766++ "name": "npt",
1767++ "type": "bool"
1768++ },
1769++ {
1770++ "name": "kvm-pv-tlb-flush",
1771++ "type": "bool"
1772++ },
1773++ {
1774++ "name": "tsc",
1775++ "type": "bool"
1776++ },
1777++ {
1778++ "name": "monitor",
1779++ "type": "bool"
1780++ },
1781++ {
1782++ "name": "f16c",
1783++ "type": "bool"
1784++ },
1785++ {
1786++ "name": "sse2",
1787++ "type": "bool"
1788++ },
1789++ {
1790++ "name": "rdpid",
1791++ "type": "bool"
1792++ },
1793++ {
1794++ "name": "mce",
1795++ "type": "bool"
1796++ },
1797++ {
1798++ "name": "full-cpuid-auto-level",
1799++ "type": "bool"
1800++ },
1801++ {
1802++ "name": "xtpr",
1803++ "type": "bool"
1804++ },
1805++ {
1806++ "name": "mca",
1807++ "type": "bool"
1808++ },
1809++ {
1810++ "name": "cid",
1811++ "type": "bool"
1812++ },
1813++ {
1814++ "name": "tm",
1815++ "type": "bool"
1816++ },
1817++ {
1818++ "name": "pku",
1819++ "type": "bool"
1820++ },
1821++ {
1822++ "name": "avx512vnni",
1823++ "type": "bool"
1824++ },
1825++ {
1826++ "name": "tce",
1827++ "type": "bool"
1828++ },
1829++ {
1830++ "name": "kvmclock",
1831++ "type": "bool"
1832++ },
1833++ {
1834++ "name": "sse4a",
1835++ "type": "bool"
1836++ },
1837++ {
1838++ "name": "ds",
1839++ "type": "bool"
1840++ },
1841++ {
1842++ "name": "lahf-lm",
1843++ "type": "bool"
1844++ },
1845++ {
1846++ "name": "xsaves",
1847++ "type": "bool"
1848++ },
1849++ {
1850++ "name": "clflushopt",
1851++ "type": "bool"
1852++ },
1853++ {
1854++ "name": "kvm",
1855++ "type": "bool"
1856++ },
1857++ {
1858++ "name": "ss",
1859++ "type": "bool"
1860++ },
1861++ {
1862++ "name": "flushbyasid",
1863++ "type": "bool"
1864++ },
1865++ {
1866++ "name": "pause_filter",
1867++ "type": "bool"
1868++ },
1869++ {
1870++ "name": "de",
1871++ "type": "bool"
1872++ },
1873++ {
1874++ "name": "est",
1875++ "type": "bool"
1876++ },
1877++ {
1878++ "name": "check",
1879++ "type": "bool"
1880++ },
1881++ {
1882++ "name": "lahf_lm",
1883++ "type": "bool"
1884++ },
1885++ {
1886++ "name": "dtes64",
1887++ "type": "bool"
1888++ },
1889++ {
1890++ "name": "vmx",
1891++ "type": "bool"
1892++ },
1893++ {
1894++ "name": "xsavec",
1895++ "type": "bool"
1896++ },
1897++ {
1898++ "name": "svm-lock",
1899++ "type": "bool"
1900++ },
1901++ {
1902++ "name": "avx512ifma",
1903++ "type": "bool"
1904++ },
1905++ {
1906++ "name": "clflush",
1907++ "type": "bool"
1908++ },
1909++ {
1910++ "name": "rdseed",
1911++ "type": "bool"
1912++ },
1913++ {
1914++ "name": "avx512cd",
1915++ "type": "bool"
1916++ },
1917++ {
1918++ "name": "xsaveopt",
1919++ "type": "bool"
1920++ },
1921++ {
1922++ "name": "tbm",
1923++ "type": "bool"
1924++ },
1925++ {
1926++ "name": "ace2",
1927++ "type": "bool"
1928++ },
1929++ {
1930++ "name": "vme",
1931++ "type": "bool"
1932++ },
1933++ {
1934++ "name": "kvm_asyncpf",
1935++ "type": "bool"
1936++ },
1937++ {
1938++ "name": "hv-vapic",
1939++ "type": "bool"
1940++ },
1941++ {
1942++ "name": "parent_bus",
1943++ "type": "link<bus>"
1944++ },
1945++ {
1946++ "name": "lmce",
1947++ "type": "bool"
1948++ },
1949++ {
1950++ "name": "hv-reset",
1951++ "type": "bool"
1952++ },
1953++ {
1954++ "name": "hv-runtime",
1955++ "type": "bool"
1956++ },
1957++ {
1958++ "name": "avx512bw",
1959++ "type": "bool"
1960++ },
1961++ {
1962++ "name": "xcrypt",
1963++ "type": "bool"
1964++ },
1965++ {
1966++ "name": "fpu",
1967++ "type": "bool"
1968++ },
1969++ {
1970++ "name": "fxsr",
1971++ "type": "bool"
1972++ },
1973++ {
1974++ "name": "ds-cpl",
1975++ "type": "bool"
1976++ },
1977++ {
1978++ "name": "kvm-pv-eoi",
1979++ "type": "bool"
1980++ },
1981++ {
1982++ "name": "hle",
1983++ "type": "bool"
1984++ },
1985++ {
1986++ "name": "cx8",
1987++ "type": "bool"
1988++ },
1989++ {
1990++ "name": "mpx",
1991++ "type": "bool"
1992++ },
1993++ {
1994++ "name": "invpcid",
1995++ "type": "bool"
1996++ },
1997++ {
1998++ "name": "pcommit",
1999++ "type": "bool"
2000++ },
2001++ {
2002++ "name": "arat",
2003++ "type": "bool"
2004++ },
2005++ {
2006++ "name": "sse",
2007++ "type": "bool"
2008++ },
2009++ {
2010++ "name": "syscall",
2011++ "type": "bool"
2012++ },
2013++ {
2014++ "name": "tsc_scale",
2015++ "type": "bool"
2016++ },
2017++ {
2018++ "name": "xlevel2",
2019++ "type": "uint32"
2020++ },
2021++ {
2022++ "name": "hv-time",
2023++ "type": "bool"
2024++ },
2025++ {
2026++ "name": "kvm_pv_eoi",
2027++ "type": "bool"
2028++ },
2029++ {
2030++ "name": "osvw",
2031++ "type": "bool"
2032++ },
2033++ {
2034++ "name": "perfctr-nb",
2035++ "type": "bool"
2036++ },
2037++ {
2038++ "name": "rtm",
2039++ "type": "bool"
2040++ },
2041++ {
2042++ "name": "avx512-4fmaps",
2043++ "type": "bool"
2044++ },
2045++ {
2046++ "name": "avx2",
2047++ "type": "bool"
2048++ },
2049++ {
2050++ "name": "perfctr_nb",
2051++ "type": "bool"
2052++ },
2053++ {
2054++ "name": "kvm-nopiodelay",
2055++ "type": "bool"
2056++ },
2057++ {
2058++ "name": "phys-bits",
2059++ "type": "uint32"
2060++ },
2061++ {
2062++ "name": "avx512pf",
2063++ "type": "bool"
2064++ },
2065++ {
2066++ "name": "level",
2067++ "type": "uint32"
2068++ },
2069++ {
2070++ "name": "osxsave",
2071++ "type": "bool"
2072++ },
2073++ {
2074++ "name": "cpuid-0xb",
2075++ "type": "bool"
2076++ },
2077++ {
2078++ "name": "tsc-deadline",
2079++ "type": "bool"
2080++ },
2081++ {
2082++ "name": "xgetbv1",
2083++ "type": "bool"
2084++ },
2085++ {
2086++ "name": "fxsr_opt",
2087++ "type": "bool"
2088++ },
2089++ {
2090++ "name": "popcnt",
2091++ "type": "bool"
2092++ },
2093++ {
2094++ "name": "umip",
2095++ "type": "bool"
2096++ },
2097++ {
2098++ "name": "realized",
2099++ "type": "bool"
2100++ },
2101++ {
2102++ "name": "phe",
2103++ "type": "bool"
2104++ },
2105++ {
2106++ "name": "cmp-legacy",
2107++ "type": "bool"
2108++ },
2109++ {
2110++ "name": "dca",
2111++ "type": "bool"
2112++ },
2113++ {
2114++ "name": "acpi",
2115++ "type": "bool"
2116++ },
2117++ {
2118++ "name": "pn",
2119++ "type": "bool"
2120++ },
2121++ {
2122++ "name": "model-id",
2123++ "type": "string"
2124++ },
2125++ {
2126++ "name": "crash-information",
2127++ "type": "GuestPanicInformation"
2128++ },
2129++ {
2130++ "name": "tsc-scale",
2131++ "type": "bool"
2132++ },
2133++ {
2134++ "name": "node-id",
2135++ "type": "int32"
2136++ },
2137++ {
2138++ "name": "cx16",
2139++ "type": "bool"
2140++ },
2141++ {
2142++ "name": "mmx",
2143++ "type": "bool"
2144++ },
2145++ {
2146++ "name": "topoext",
2147++ "type": "bool"
2148++ },
2149++ {
2150++ "name": "pge",
2151++ "type": "bool"
2152++ },
2153++ {
2154++ "name": "fsgsbase",
2155++ "type": "bool"
2156++ },
2157++ {
2158++ "name": "pclmuldq",
2159++ "type": "bool"
2160++ },
2161++ {
2162++ "name": "misalignsse",
2163++ "type": "bool"
2164++ },
2165++ {
2166++ "name": "phe-en",
2167++ "type": "bool"
2168++ },
2169++ {
2170++ "name": "fma",
2171++ "type": "bool"
2172++ }
2173++ ],
2174+ "id": "libvirt-37"
2175+ }
2176+
2177+ {
2178++ "execute": "query-machines",
2179++ "id": "libvirt-38"
2180++}
2181++
2182++{
2183+ "return": [
2184+ {
2185+ "hotpluggable-cpus": true,
2186+@@ -4962,12 +5992,12 @@
2187+ "cpu-max": 255
2188+ }
2189+ ],
2190+- "id": "libvirt-37"
2191++ "id": "libvirt-38"
2192+ }
2193+
2194+ {
2195+ "execute": "query-cpu-definitions",
2196+- "id": "libvirt-38"
2197++ "id": "libvirt-39"
2198+ }
2199+
2200+ {
2201+@@ -5481,12 +6511,12 @@
2202+ "migration-safe": true
2203+ }
2204+ ],
2205+- "id": "libvirt-38"
2206++ "id": "libvirt-39"
2207+ }
2208+
2209+ {
2210+ "execute": "query-tpm-models",
2211+- "id": "libvirt-39"
2212++ "id": "libvirt-40"
2213+ }
2214+
2215+ {
2216+@@ -5494,12 +6524,12 @@
2217+ "tpm-crb",
2218+ "tpm-tis"
2219+ ],
2220+- "id": "libvirt-39"
2221++ "id": "libvirt-40"
2222+ }
2223+
2224+ {
2225+ "execute": "query-tpm-types",
2226+- "id": "libvirt-40"
2227++ "id": "libvirt-41"
2228+ }
2229+
2230+ {
2231+@@ -5507,12 +6537,12 @@
2232+ "passthrough",
2233+ "emulator"
2234+ ],
2235+- "id": "libvirt-40"
2236++ "id": "libvirt-41"
2237+ }
2238+
2239+ {
2240+ "execute": "query-command-line-options",
2241+- "id": "libvirt-41"
2242++ "id": "libvirt-42"
2243+ }
2244+
2245+ {
2246+@@ -6799,12 +7829,12 @@
2247+ "option": "drive"
2248+ }
2249+ ],
2250+- "id": "libvirt-41"
2251++ "id": "libvirt-42"
2252+ }
2253+
2254+ {
2255+ "execute": "query-migrate-capabilities",
2256+- "id": "libvirt-42"
2257++ "id": "libvirt-43"
2258+ }
2259+
2260+ {
2261+@@ -6866,12 +7896,12 @@
2262+ "capability": "dirty-bitmaps"
2263+ }
2264+ ],
2265+- "id": "libvirt-42"
2266++ "id": "libvirt-43"
2267+ }
2268+
2269+ {
2270+ "execute": "query-qmp-schema",
2271+- "id": "libvirt-43"
2272++ "id": "libvirt-44"
2273+ }
2274+
2275+ {
2276+@@ -18239,7 +19269,7 @@
2277+ "meta-type": "object"
2278+ }
2279+ ],
2280+- "id": "libvirt-43"
2281++ "id": "libvirt-44"
2282+ }
2283+
2284+ {
2285+@@ -18250,7 +19280,7 @@
2286+ "name": "host"
2287+ }
2288+ },
2289+- "id": "libvirt-44"
2290++ "id": "libvirt-45"
2291+ }
2292+
2293+ {
2294+@@ -18440,7 +19470,7 @@
2295+ }
2296+ }
2297+ },
2298+- "id": "libvirt-44"
2299++ "id": "libvirt-45"
2300+ }
2301+
2302+ {
2303+@@ -18632,7 +19662,7 @@
2304+ }
2305+ }
2306+ },
2307+- "id": "libvirt-45"
2308++ "id": "libvirt-46"
2309+ }
2310+
2311+ {
2312+@@ -18887,7 +19917,7 @@
2313+ }
2314+ }
2315+ },
2316+- "id": "libvirt-45"
2317++ "id": "libvirt-46"
2318+ }
2319+
2320+ {
2321+@@ -18901,7 +19931,7 @@
2322+ }
2323+ }
2324+ },
2325+- "id": "libvirt-46"
2326++ "id": "libvirt-47"
2327+ }
2328+
2329+ {
2330+@@ -19091,7 +20121,7 @@
2331+ }
2332+ }
2333+ },
2334+- "id": "libvirt-46"
2335++ "id": "libvirt-47"
2336+ }
2337+
2338+ {
2339+@@ -19283,7 +20313,7 @@
2340+ }
2341+ }
2342+ },
2343+- "id": "libvirt-47"
2344++ "id": "libvirt-48"
2345+ }
2346+
2347+ {
2348+@@ -19538,12 +20568,12 @@
2349+ }
2350+ }
2351+ },
2352+- "id": "libvirt-47"
2353++ "id": "libvirt-48"
2354+ }
2355+
2356+ {
2357+ "execute": "query-sev-capabilities",
2358+- "id": "libvirt-48"
2359++ "id": "libvirt-49"
2360+ }
2361+
2362+ {
2363+@@ -19553,7 +20583,7 @@
2364+ "cert-chain": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA",
2365+ "pdh": "AQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAAAQAAAAAOAAA"
2366+ },
2367+- "id": "libvirt-48"
2368++ "id": "libvirt-49"
2369+ }
2370+
2371+ {
2372+--- a/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
2373++++ b/tests/qemucapabilitiesdata/caps_3.0.0.x86_64.replies
2374+@@ -4893,13 +4893,1075 @@
2375+ }
2376+
2377+ {
2378+- "execute": "query-machines",
2379++ "execute": "qom-list-properties",
2380++ "arguments": {
2381++ "typename": "max-x86_64-cpu"
2382++ },
2383+ "id": "libvirt-37"
2384+ }
2385+
2386+ {
2387+ "return": [
2388+ {
2389++ "name": "min-xlevel2",
2390++ "type": "uint32"
2391++ },
2392++ {
2393++ "name": "amd-ssbd",
2394++ "type": "bool"
2395++ },
2396++ {
2397++ "name": "vendor",
2398++ "type": "string"
2399++ },
2400++ {
2401++ "name": "gfni",
2402++ "type": "bool"
2403++ },
2404++ {
2405++ "name": "clwb",
2406++ "type": "bool"
2407++ },
2408++ {
2409++ "name": "nx",
2410++ "type": "bool"
2411++ },
2412++ {
2413++ "name": "x2apic",
2414++ "type": "bool"
2415++ },
2416++ {
2417++ "name": "kvmclock-stable-bit",
2418++ "type": "bool"
2419++ },
2420++ {
2421++ "name": "vmcb_clean",
2422++ "type": "bool"
2423++ },
2424++ {
2425++ "name": "min-level",
2426++ "type": "uint32"
2427++ },
2428++ {
2429++ "name": "fxsr-opt",
2430++ "type": "bool"
2431++ },
2432++ {
2433++ "name": "skinit",
2434++ "type": "bool"
2435++ },
2436++ {
2437++ "name": "avx",
2438++ "type": "bool"
2439++ },
2440++ {
2441++ "name": "3dnowext",
2442++ "type": "bool"
2443++ },
2444++ {
2445++ "name": "nodeid_msr",
2446++ "type": "bool"
2447++ },
2448++ {
2449++ "name": "hv-crash",
2450++ "type": "bool"
2451++ },
2452++ {
2453++ "name": "hypervisor",
2454++ "type": "bool"
2455++ },
2456++ {
2457++ "name": "enforce",
2458++ "type": "bool"
2459++ },
2460++ {
2461++ "name": "stepping",
2462++ "type": "int"
2463++ },
2464++ {
2465++ "name": "sse4_2",
2466++ "type": "bool"
2467++ },
2468++ {
2469++ "name": "sse4_1",
2470++ "type": "bool"
2471++ },
2472++ {
2473++ "name": "x-hv-max-vps",
2474++ "type": "int32"
2475++ },
2476++ {
2477++ "name": "hv-frequencies",
2478++ "type": "bool"
2479++ },
2480++ {
2481++ "name": "kvm-hint-dedicated",
2482++ "type": "bool"
2483++ },
2484++ {
2485++ "name": "cmp_legacy",
2486++ "type": "bool"
2487++ },
2488++ {
2489++ "name": "tm2",
2490++ "type": "bool"
2491++ },
2492++ {
2493++ "name": "smx",
2494++ "type": "bool"
2495++ },
2496++ {
2497++ "name": "host-cache-info",
2498++ "type": "bool"
2499++ },
2500++ {
2501++ "name": "hv-vendor-id",
2502++ "type": "str"
2503++ },
2504++ {
2505++ "name": "movbe",
2506++ "type": "bool"
2507++ },
2508++ {
2509++ "name": "3dnowprefetch",
2510++ "type": "bool"
2511++ },
2512++ {
2513++ "name": "mtrr",
2514++ "type": "bool"
2515++ },
2516++ {
2517++ "name": "wdt",
2518++ "type": "bool"
2519++ },
2520++ {
2521++ "name": "thread-id",
2522++ "type": "int32"
2523++ },
2524++ {
2525++ "name": "aes",
2526++ "type": "bool"
2527++ },
2528++ {
2529++ "name": "apic-id",
2530++ "type": "uint32"
2531++ },
2532++ {
2533++ "name": "lm",
2534++ "type": "bool"
2535++ },
2536++ {
2537++ "name": "family",
2538++ "type": "int"
2539++ },
2540++ {
2541++ "name": "tsc-adjust",
2542++ "type": "bool"
2543++ },
2544++ {
2545++ "name": "pfthreshold",
2546++ "type": "bool"
2547++ },
2548++ {
2549++ "name": "kvm-no-smi-migration",
2550++ "type": "bool"
2551++ },
2552++ {
2553++ "name": "amd-no-ssb",
2554++ "type": "bool"
2555++ },
2556++ {
2557++ "name": "pse",
2558++ "type": "bool"
2559++ },
2560++ {
2561++ "name": "filtered-features",
2562++ "type": "X86CPUFeatureWordInfo"
2563++ },
2564++ {
2565++ "name": "hv-vpindex",
2566++ "type": "bool"
2567++ },
2568++ {
2569++ "name": "adx",
2570++ "type": "bool"
2571++ },
2572++ {
2573++ "name": "avx512bitalg",
2574++ "type": "bool"
2575++ },
2576++ {
2577++ "name": "i64",
2578++ "type": "bool"
2579++ },
2580++ {
2581++ "name": "vaes",
2582++ "type": "bool"
2583++ },
2584++ {
2585++ "name": "ia64",
2586++ "type": "bool"
2587++ },
2588++ {
2589++ "name": "nodeid-msr",
2590++ "type": "bool"
2591++ },
2592++ {
2593++ "name": "ibpb",
2594++ "type": "bool"
2595++ },
2596++ {
2597++ "name": "hv-synic",
2598++ "type": "bool"
2599++ },
2600++ {
2601++ "name": "ibs",
2602++ "type": "bool"
2603++ },
2604++ {
2605++ "name": "kvm_mmu",
2606++ "type": "bool"
2607++ },
2608++ {
2609++ "name": "tcg-cpuid",
2610++ "type": "bool"
2611++ },
2612++ {
2613++ "name": "nrip_save",
2614++ "type": "bool"
2615++ },
2616++ {
2617++ "name": "kvm_nopiodelay",
2618++ "type": "bool"
2619++ },
2620++ {
2621++ "name": "lbrv",
2622++ "type": "bool"
2623++ },
2624++ {
2625++ "name": "rdtscp",
2626++ "type": "bool"
2627++ },
2628++ {
2629++ "name": "memory",
2630++ "type": "link<qemu:memory-region>"
2631++ },
2632++ {
2633++ "name": "avx512vbmi2",
2634++ "type": "bool"
2635++ },
2636++ {
2637++ "name": "ace2-en",
2638++ "type": "bool"
2639++ },
2640++ {
2641++ "name": "invtsc",
2642++ "type": "bool"
2643++ },
2644++ {
2645++ "name": "sse4.2",
2646++ "type": "bool"
2647++ },
2648++ {
2649++ "name": "sse4.1",
2650++ "type": "bool"
2651++ },
2652++ {
2653++ "name": "pbe",
2654++ "type": "bool"
2655++ },
2656++ {
2657++ "name": "rdrand",
2658++ "type": "bool"
2659++ },
2660++ {
2661++ "name": "socket-id",
2662++ "type": "int32"
2663++ },
2664++ {
2665++ "name": "hotpluggable",
2666++ "type": "bool"
2667++ },
2668++ {
2669++ "name": "l3-cache",
2670++ "type": "bool"
2671++ },
2672++ {
2673++ "name": "kvm-steal-time",
2674++ "type": "bool"
2675++ },
2676++ {
2677++ "name": "vmware-cpuid-freq",
2678++ "type": "bool"
2679++ },
2680++ {
2681++ "name": "legacy-cache",
2682++ "type": "bool"
2683++ },
2684++ {
2685++ "name": "xop",
2686++ "type": "bool"
2687++ },
2688++ {
2689++ "name": "tsc-frequency",
2690++ "type": "int"
2691++ },
2692++ {
2693++ "name": "fill-mtrr-mask",
2694++ "type": "bool"
2695++ },
2696++ {
2697++ "name": "core-id",
2698++ "type": "int32"
2699++ },
2700++ {
2701++ "name": "intel-pt",
2702++ "type": "bool"
2703++ },
2704++ {
2705++ "name": "pat",
2706++ "type": "bool"
2707++ },
2708++ {
2709++ "name": "pcid",
2710++ "type": "bool"
2711++ },
2712++ {
2713++ "name": "pclmulqdq",
2714++ "type": "bool"
2715++ },
2716++ {
2717++ "name": "sse4-2",
2718++ "type": "bool"
2719++ },
2720++ {
2721++ "name": "sse4-1",
2722++ "type": "bool"
2723++ },
2724++ {
2725++ "name": "sha-ni",
2726++ "type": "bool"
2727++ },
2728++ {
2729++ "name": "cmov",
2730++ "type": "bool"
2731++ },
2732++ {
2733++ "name": "pae",
2734++ "type": "bool"
2735++ },
2736++ {
2737++ "name": "smep",
2738++ "type": "bool"
2739++ },
2740++ {
2741++ "name": "virt-ssbd",
2742++ "type": "bool"
2743++ },
2744++ {
2745++ "name": "abm",
2746++ "type": "bool"
2747++ },
2748++ {
2749++ "name": "xstore",
2750++ "type": "bool"
2751++ },
2752++ {
2753++ "name": "tsc_adjust",
2754++ "type": "bool"
2755++ },
2756++ {
2757++ "name": "type",
2758++ "type": "string"
2759++ },
2760++ {
2761++ "name": "kvm-asyncpf",
2762++ "type": "bool"
2763++ },
2764++ {
2765++ "name": "pdpe1gb",
2766++ "type": "bool"
2767++ },
2768++ {
2769++ "name": "min-xlevel",
2770++ "type": "uint32"
2771++ },
2772++ {
2773++ "name": "kvm-mmu",
2774++ "type": "bool"
2775++ },
2776++ {
2777++ "name": "kvm-pv-unhalt",
2778++ "type": "bool"
2779++ },
2780++ {
2781++ "name": "avx512f",
2782++ "type": "bool"
2783++ },
2784++ {
2785++ "name": "avx512vbmi",
2786++ "type": "bool"
2787++ },
2788++ {
2789++ "name": "avx512-4vnniw",
2790++ "type": "bool"
2791++ },
2792++ {
2793++ "name": "xd",
2794++ "type": "bool"
2795++ },
2796++ {
2797++ "name": "mmxext",
2798++ "type": "bool"
2799++ },
2800++ {
2801++ "name": "decodeassists",
2802++ "type": "bool"
2803++ },
2804++ {
2805++ "name": "ht",
2806++ "type": "bool"
2807++ },
2808++ {
2809++ "name": "xsave",
2810++ "type": "bool"
2811++ },
2812++ {
2813++ "name": "perfctr_core",
2814++ "type": "bool"
2815++ },
2816++ {
2817++ "name": "feature-words",
2818++ "type": "X86CPUFeatureWordInfo"
2819++ },
2820++ {
2821++ "name": "migratable",
2822++ "type": "bool"
2823++ },
2824++ {
2825++ "name": "3dnow",
2826++ "type": "bool"
2827++ },
2828++ {
2829++ "name": "spec-ctrl",
2830++ "type": "bool"
2831++ },
2832++ {
2833++ "name": "model",
2834++ "type": "int"
2835++ },
2836++ {
2837++ "name": "nrip-save",
2838++ "type": "bool"
2839++ },
2840++ {
2841++ "name": "lwp",
2842++ "type": "bool"
2843++ },
2844++ {
2845++ "name": "xstore-en",
2846++ "type": "bool"
2847++ },
2848++ {
2849++ "name": "avx512vl",
2850++ "type": "bool"
2851++ },
2852++ {
2853++ "name": "kvm_pv_unhalt",
2854++ "type": "bool"
2855++ },
2856++ {
2857++ "name": "bmi2",
2858++ "type": "bool"
2859++ },
2860++ {
2861++ "name": "bmi1",
2862++ "type": "bool"
2863++ },
2864++ {
2865++ "name": "la57",
2866++ "type": "bool"
2867++ },
2868++ {
2869++ "name": "ffxsr",
2870++ "type": "bool"
2871++ },
2872++ {
2873++ "name": "vmcb-clean",
2874++ "type": "bool"
2875++ },
2876++ {
2877++ "name": "pause-filter",
2878++ "type": "bool"
2879++ },
2880++ {
2881++ "name": "pni",
2882++ "type": "bool"
2883++ },
2884++ {
2885++ "name": "kvm_steal_time",
2886++ "type": "bool"
2887++ },
2888++ {
2889++ "name": "svm_lock",
2890++ "type": "bool"
2891++ },
2892++ {
2893++ "name": "pse36",
2894++ "type": "bool"
2895++ },
2896++ {
2897++ "name": "hv-stimer",
2898++ "type": "bool"
2899++ },
2900++ {
2901++ "name": "host-phys-bits",
2902++ "type": "bool"
2903++ },
2904++ {
2905++ "name": "extapic",
2906++ "type": "bool"
2907++ },
2908++ {
2909++ "name": "hv-spinlocks",
2910++ "type": "int"
2911++ },
2912++ {
2913++ "name": "pmu",
2914++ "type": "bool"
2915++ },
2916++ {
2917++ "name": "pmm",
2918++ "type": "bool"
2919++ },
2920++ {
2921++ "name": "vpclmulqdq",
2922++ "type": "bool"
2923++ },
2924++ {
2925++ "name": "avx512-vpopcntdq",
2926++ "type": "bool"
2927++ },
2928++ {
2929++ "name": "avx512er",
2930++ "type": "bool"
2931++ },
2932++ {
2933++ "name": "pdcm",
2934++ "type": "bool"
2935++ },
2936++ {
2937++ "name": "svm",
2938++ "type": "bool"
2939++ },
2940++ {
2941++ "name": "apic",
2942++ "type": "bool"
2943++ },
2944++ {
2945++ "name": "xcrypt-en",
2946++ "type": "bool"
2947++ },
2948++ {
2949++ "name": "cr8legacy",
2950++ "type": "bool"
2951++ },
2952++ {
2953++ "name": "fma4",
2954++ "type": "bool"
2955++ },
2956++ {
2957++ "name": "erms",
2958++ "type": "bool"
2959++ },
2960++ {
2961++ "name": "msr",
2962++ "type": "bool"
2963++ },
2964++ {
2965++ "name": "ds_cpl",
2966++ "type": "bool"
2967++ },
2968++ {
2969++ "name": "xlevel",
2970++ "type": "uint32"
2971++ },
2972++ {
2973++ "name": "sep",
2974++ "type": "bool"
2975++ },
2976++ {
2977++ "name": "hotplugged",
2978++ "type": "bool"
2979++ },
2980++ {
2981++ "name": "hv-relaxed",
2982++ "type": "bool"
2983++ },
2984++ {
2985++ "name": "cldemote",
2986++ "type": "bool"
2987++ },
2988++ {
2989++ "name": "perfctr-core",
2990++ "type": "bool"
2991++ },
2992++ {
2993++ "name": "avx512vnni",
2994++ "type": "bool"
2995++ },
2996++ {
2997++ "name": "smap",
2998++ "type": "bool"
2999++ },
3000++ {
3001++ "name": "sse3",
3002++ "type": "bool"
3003++ },
3004++ {
3005++ "name": "avx512dq",
3006++ "type": "bool"
3007++ },
3008++ {
3009++ "name": "ssse3",
3010++ "type": "bool"
3011++ },
3012++ {
3013++ "name": "pmm-en",
3014++ "type": "bool"
3015++ },
3016++ {
3017++ "name": "npt",
3018++ "type": "bool"
3019++ },
3020++ {
3021++ "name": "kvm-pv-tlb-flush",
3022++ "type": "bool"
3023++ },
3024++ {
3025++ "name": "tsc",
3026++ "type": "bool"
3027++ },
3028++ {
3029++ "name": "monitor",
3030++ "type": "bool"
3031++ },
3032++ {
3033++ "name": "f16c",
3034++ "type": "bool"
3035++ },
3036++ {
3037++ "name": "sse2",
3038++ "type": "bool"
3039++ },
3040++ {
3041++ "name": "rdpid",
3042++ "type": "bool"
3043++ },
3044++ {
3045++ "name": "mce",
3046++ "type": "bool"
3047++ },
3048++ {
3049++ "name": "full-cpuid-auto-level",
3050++ "type": "bool"
3051++ },
3052++ {
3053++ "name": "xtpr",
3054++ "type": "bool"
3055++ },
3056++ {
3057++ "name": "mca",
3058++ "type": "bool"
3059++ },
3060++ {
3061++ "name": "cid",
3062++ "type": "bool"
3063++ },
3064++ {
3065++ "name": "tm",
3066++ "type": "bool"
3067++ },
3068++ {
3069++ "name": "pku",
3070++ "type": "bool"
3071++ },
3072++ {
3073++ "name": "hv-tlbflush",
3074++ "type": "bool"
3075++ },
3076++ {
3077++ "name": "ds",
3078++ "type": "bool"
3079++ },
3080++ {
3081++ "name": "kvmclock",
3082++ "type": "bool"
3083++ },
3084++ {
3085++ "name": "tce",
3086++ "type": "bool"
3087++ },
3088++ {
3089++ "name": "sse4a",
3090++ "type": "bool"
3091++ },
3092++ {
3093++ "name": "lahf-lm",
3094++ "type": "bool"
3095++ },
3096++ {
3097++ "name": "xsaves",
3098++ "type": "bool"
3099++ },
3100++ {
3101++ "name": "clflushopt",
3102++ "type": "bool"
3103++ },
3104++ {
3105++ "name": "kvm",
3106++ "type": "bool"
3107++ },
3108++ {
3109++ "name": "ss",
3110++ "type": "bool"
3111++ },
3112++ {
3113++ "name": "flushbyasid",
3114++ "type": "bool"
3115++ },
3116++ {
3117++ "name": "md-clear",
3118++ "type": "bool"
3119++ },
3120++ {
3121++ "name": "pause_filter",
3122++ "type": "bool"
3123++ },
3124++ {
3125++ "name": "de",
3126++ "type": "bool"
3127++ },
3128++ {
3129++ "name": "est",
3130++ "type": "bool"
3131++ },
3132++ {
3133++ "name": "check",
3134++ "type": "bool"
3135++ },
3136++ {
3137++ "name": "lahf_lm",
3138++ "type": "bool"
3139++ },
3140++ {
3141++ "name": "dtes64",
3142++ "type": "bool"
3143++ },
3144++ {
3145++ "name": "vmx",
3146++ "type": "bool"
3147++ },
3148++ {
3149++ "name": "xsavec",
3150++ "type": "bool"
3151++ },
3152++ {
3153++ "name": "svm-lock",
3154++ "type": "bool"
3155++ },
3156++ {
3157++ "name": "avx512ifma",
3158++ "type": "bool"
3159++ },
3160++ {
3161++ "name": "clflush",
3162++ "type": "bool"
3163++ },
3164++ {
3165++ "name": "rdseed",
3166++ "type": "bool"
3167++ },
3168++ {
3169++ "name": "avx512cd",
3170++ "type": "bool"
3171++ },
3172++ {
3173++ "name": "xsaveopt",
3174++ "type": "bool"
3175++ },
3176++ {
3177++ "name": "tbm",
3178++ "type": "bool"
3179++ },
3180++ {
3181++ "name": "ace2",
3182++ "type": "bool"
3183++ },
3184++ {
3185++ "name": "vme",
3186++ "type": "bool"
3187++ },
3188++ {
3189++ "name": "kvm_asyncpf",
3190++ "type": "bool"
3191++ },
3192++ {
3193++ "name": "hv-vapic",
3194++ "type": "bool"
3195++ },
3196++ {
3197++ "name": "parent_bus",
3198++ "type": "link<bus>"
3199++ },
3200++ {
3201++ "name": "lmce",
3202++ "type": "bool"
3203++ },
3204++ {
3205++ "name": "x-migrate-smi-count",
3206++ "type": "bool"
3207++ },
3208++ {
3209++ "name": "hv-reset",
3210++ "type": "bool"
3211++ },
3212++ {
3213++ "name": "hv-runtime",
3214++ "type": "bool"
3215++ },
3216++ {
3217++ "name": "ssbd",
3218++ "type": "bool"
3219++ },
3220++ {
3221++ "name": "avx512bw",
3222++ "type": "bool"
3223++ },
3224++ {
3225++ "name": "xcrypt",
3226++ "type": "bool"
3227++ },
3228++ {
3229++ "name": "fpu",
3230++ "type": "bool"
3231++ },
3232++ {
3233++ "name": "fxsr",
3234++ "type": "bool"
3235++ },
3236++ {
3237++ "name": "ds-cpl",
3238++ "type": "bool"
3239++ },
3240++ {
3241++ "name": "kvm-pv-eoi",
3242++ "type": "bool"
3243++ },
3244++ {
3245++ "name": "hle",
3246++ "type": "bool"
3247++ },
3248++ {
3249++ "name": "cx8",
3250++ "type": "bool"
3251++ },
3252++ {
3253++ "name": "mpx",
3254++ "type": "bool"
3255++ },
3256++ {
3257++ "name": "invpcid",
3258++ "type": "bool"
3259++ },
3260++ {
3261++ "name": "pcommit",
3262++ "type": "bool"
3263++ },
3264++ {
3265++ "name": "arat",
3266++ "type": "bool"
3267++ },
3268++ {
3269++ "name": "sse",
3270++ "type": "bool"
3271++ },
3272++ {
3273++ "name": "syscall",
3274++ "type": "bool"
3275++ },
3276++ {
3277++ "name": "tsc_scale",
3278++ "type": "bool"
3279++ },
3280++ {
3281++ "name": "xlevel2",
3282++ "type": "uint32"
3283++ },
3284++ {
3285++ "name": "hv-time",
3286++ "type": "bool"
3287++ },
3288++ {
3289++ "name": "kvm_pv_eoi",
3290++ "type": "bool"
3291++ },
3292++ {
3293++ "name": "osvw",
3294++ "type": "bool"
3295++ },
3296++ {
3297++ "name": "perfctr-nb",
3298++ "type": "bool"
3299++ },
3300++ {
3301++ "name": "rtm",
3302++ "type": "bool"
3303++ },
3304++ {
3305++ "name": "avx512-4fmaps",
3306++ "type": "bool"
3307++ },
3308++ {
3309++ "name": "avx2",
3310++ "type": "bool"
3311++ },
3312++ {
3313++ "name": "perfctr_nb",
3314++ "type": "bool"
3315++ },
3316++ {
3317++ "name": "kvm-nopiodelay",
3318++ "type": "bool"
3319++ },
3320++ {
3321++ "name": "avx512pf",
3322++ "type": "bool"
3323++ },
3324++ {
3325++ "name": "level",
3326++ "type": "uint32"
3327++ },
3328++ {
3329++ "name": "phys-bits",
3330++ "type": "uint32"
3331++ },
3332++ {
3333++ "name": "cpuid-0xb",
3334++ "type": "bool"
3335++ },
3336++ {
3337++ "name": "tsc-deadline",
3338++ "type": "bool"
3339++ },
3340++ {
3341++ "name": "fxsr_opt",
3342++ "type": "bool"
3343++ },
3344++ {
3345++ "name": "xgetbv1",
3346++ "type": "bool"
3347++ },
3348++ {
3349++ "name": "popcnt",
3350++ "type": "bool"
3351++ },
3352++ {
3353++ "name": "umip",
3354++ "type": "bool"
3355++ },
3356++ {
3357++ "name": "realized",
3358++ "type": "bool"
3359++ },
3360++ {
3361++ "name": "phe",
3362++ "type": "bool"
3363++ },
3364++ {
3365++ "name": "cmp-legacy",
3366++ "type": "bool"
3367++ },
3368++ {
3369++ "name": "dca",
3370++ "type": "bool"
3371++ },
3372++ {
3373++ "name": "acpi",
3374++ "type": "bool"
3375++ },
3376++ {
3377++ "name": "pn",
3378++ "type": "bool"
3379++ },
3380++ {
3381++ "name": "model-id",
3382++ "type": "string"
3383++ },
3384++ {
3385++ "name": "crash-information",
3386++ "type": "GuestPanicInformation"
3387++ },
3388++ {
3389++ "name": "tsc-scale",
3390++ "type": "bool"
3391++ },
3392++ {
3393++ "name": "node-id",
3394++ "type": "int32"
3395++ },
3396++ {
3397++ "name": "hv-reenlightenment",
3398++ "type": "bool"
3399++ },
3400++ {
3401++ "name": "cx16",
3402++ "type": "bool"
3403++ },
3404++ {
3405++ "name": "mmx",
3406++ "type": "bool"
3407++ },
3408++ {
3409++ "name": "topoext",
3410++ "type": "bool"
3411++ },
3412++ {
3413++ "name": "pge",
3414++ "type": "bool"
3415++ },
3416++ {
3417++ "name": "fsgsbase",
3418++ "type": "bool"
3419++ },
3420++ {
3421++ "name": "pclmuldq",
3422++ "type": "bool"
3423++ },
3424++ {
3425++ "name": "misalignsse",
3426++ "type": "bool"
3427++ },
3428++ {
3429++ "name": "phe-en",
3430++ "type": "bool"
3431++ },
3432++ {
3433++ "name": "fma",
3434++ "type": "bool"
3435++ }
3436++ ],
3437++ "id": "libvirt-37"
3438++}
3439++
3440++{
3441++ "execute": "query-machines",
3442++ "id": "libvirt-38"
3443++}
3444++
3445++{
3446++ "return": [
3447++ {
3448+ "hotpluggable-cpus": true,
3449+ "name": "isapc",
3450+ "cpu-max": 1
3451+@@ -5103,12 +6165,12 @@
3452+ "cpu-max": 255
3453+ }
3454+ ],
3455+- "id": "libvirt-37"
3456++ "id": "libvirt-38"
3457+ }
3458+
3459+ {
3460+ "execute": "query-cpu-definitions",
3461+- "id": "libvirt-38"
3462++ "id": "libvirt-39"
3463+ }
3464+
3465+ {
3466+@@ -5545,12 +6607,12 @@
3467+ "migration-safe": true
3468+ }
3469+ ],
3470+- "id": "libvirt-38"
3471++ "id": "libvirt-39"
3472+ }
3473+
3474+ {
3475+ "execute": "query-tpm-models",
3476+- "id": "libvirt-39"
3477++ "id": "libvirt-40"
3478+ }
3479+
3480+ {
3481+@@ -5558,12 +6620,12 @@
3482+ "tpm-crb",
3483+ "tpm-tis"
3484+ ],
3485+- "id": "libvirt-39"
3486++ "id": "libvirt-40"
3487+ }
3488+
3489+ {
3490+ "execute": "query-tpm-types",
3491+- "id": "libvirt-40"
3492++ "id": "libvirt-41"
3493+ }
3494+
3495+ {
3496+@@ -5571,12 +6633,12 @@
3497+ "passthrough",
3498+ "emulator"
3499+ ],
3500+- "id": "libvirt-40"
3501++ "id": "libvirt-41"
3502+ }
3503+
3504+ {
3505+ "execute": "query-command-line-options",
3506+- "id": "libvirt-41"
3507++ "id": "libvirt-42"
3508+ }
3509+
3510+ {
3511+@@ -6875,12 +7937,12 @@
3512+ "option": "drive"
3513+ }
3514+ ],
3515+- "id": "libvirt-41"
3516++ "id": "libvirt-42"
3517+ }
3518+
3519+ {
3520+ "execute": "query-migrate-capabilities",
3521+- "id": "libvirt-42"
3522++ "id": "libvirt-43"
3523+ }
3524+
3525+ {
3526+@@ -6950,12 +8012,12 @@
3527+ "capability": "late-block-activate"
3528+ }
3529+ ],
3530+- "id": "libvirt-42"
3531++ "id": "libvirt-43"
3532+ }
3533+
3534+ {
3535+ "execute": "query-qmp-schema",
3536+- "id": "libvirt-43"
3537++ "id": "libvirt-44"
3538+ }
3539+
3540+ {
3541+@@ -18835,7 +19897,7 @@
3542+ "meta-type": "object"
3543+ }
3544+ ],
3545+- "id": "libvirt-43"
3546++ "id": "libvirt-44"
3547+ }
3548+
3549+ {
3550+@@ -18846,7 +19908,7 @@
3551+ "name": "host"
3552+ }
3553+ },
3554+- "id": "libvirt-44"
3555++ "id": "libvirt-45"
3556+ }
3557+
3558+ {
3559+@@ -19039,7 +20101,7 @@
3560+ }
3561+ }
3562+ },
3563+- "id": "libvirt-44"
3564++ "id": "libvirt-45"
3565+ }
3566+
3567+ {
3568+@@ -19234,7 +20296,7 @@
3569+ }
3570+ }
3571+ },
3572+- "id": "libvirt-45"
3573++ "id": "libvirt-46"
3574+ }
3575+
3576+ {
3577+@@ -19497,7 +20559,7 @@
3578+ }
3579+ }
3580+ },
3581+- "id": "libvirt-45"
3582++ "id": "libvirt-46"
3583+ }
3584+
3585+ {
3586+@@ -19511,7 +20573,7 @@
3587+ }
3588+ }
3589+ },
3590+- "id": "libvirt-46"
3591++ "id": "libvirt-47"
3592+ }
3593+
3594+ {
3595+@@ -19704,7 +20766,7 @@
3596+ }
3597+ }
3598+ },
3599+- "id": "libvirt-46"
3600++ "id": "libvirt-47"
3601+ }
3602+
3603+ {
3604+@@ -19899,7 +20961,7 @@
3605+ }
3606+ }
3607+ },
3608+- "id": "libvirt-47"
3609++ "id": "libvirt-48"
3610+ }
3611+
3612+ {
3613+@@ -20162,16 +21224,16 @@
3614+ }
3615+ }
3616+ },
3617+- "id": "libvirt-47"
3618++ "id": "libvirt-48"
3619+ }
3620+
3621+ {
3622+ "execute": "query-sev-capabilities",
3623+- "id": "libvirt-48"
3624++ "id": "libvirt-49"
3625+ }
3626+
3627+ {
3628+- "id": "libvirt-48",
3629++ "id": "libvirt-49",
3630+ "error": {
3631+ "class": "GenericError",
3632+ "desc": "SEV feature is not available"
3633+--- a/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
3634++++ b/tests/qemucapabilitiesdata/caps_3.1.0.x86_64.replies
3635+@@ -4956,13 +4956,1123 @@
3636+ }
3637+
3638+ {
3639+- "execute": "query-machines",
3640++ "execute": "qom-list-properties",
3641++ "arguments": {
3642++ "typename": "max-x86_64-cpu"
3643++ },
3644+ "id": "libvirt-37"
3645+ }
3646+
3647+ {
3648+ "return": [
3649+ {
3650++ "name": "type",
3651++ "type": "string"
3652++ },
3653++ {
3654++ "name": "sse4_1",
3655++ "type": "bool"
3656++ },
3657++ {
3658++ "name": "popcnt",
3659++ "type": "bool"
3660++ },
3661++ {
3662++ "name": "kvm_mmu",
3663++ "type": "bool"
3664++ },
3665++ {
3666++ "name": "dtes64",
3667++ "type": "bool"
3668++ },
3669++ {
3670++ "name": "min-xlevel2",
3671++ "type": "uint32"
3672++ },
3673++ {
3674++ "name": "xstore",
3675++ "type": "bool"
3676++ },
3677++ {
3678++ "name": "stepping",
3679++ "type": "int"
3680++ },
3681++ {
3682++ "name": "pse36",
3683++ "type": "bool"
3684++ },
3685++ {
3686++ "name": "avx512-4vnniw",
3687++ "type": "bool"
3688++ },
3689++ {
3690++ "name": "fma4",
3691++ "type": "bool"
3692++ },
3693++ {
3694++ "name": "avx2",
3695++ "type": "bool"
3696++ },
3697++ {
3698++ "name": "kvm_nopiodelay",
3699++ "type": "bool"
3700++ },
3701++ {
3702++ "name": "family",
3703++ "type": "int"
3704++ },
3705++ {
3706++ "name": "pclmuldq",
3707++ "type": "bool"
3708++ },
3709++ {
3710++ "name": "vmware-cpuid-freq",
3711++ "type": "bool"
3712++ },
3713++ {
3714++ "name": "hv-spinlocks",
3715++ "type": "int"
3716++ },
3717++ {
3718++ "name": "erms",
3719++ "type": "bool"
3720++ },
3721++ {
3722++ "name": "vaes",
3723++ "type": "bool"
3724++ },
3725++ {
3726++ "name": "realized",
3727++ "type": "bool"
3728++ },
3729++ {
3730++ "name": "hv-reset",
3731++ "type": "bool"
3732++ },
3733++ {
3734++ "name": "rdrand",
3735++ "type": "bool"
3736++ },
3737++ {
3738++ "name": "model",
3739++ "type": "int"
3740++ },
3741++ {
3742++ "name": "avx512-vpopcntdq",
3743++ "type": "bool"
3744++ },
3745++ {
3746++ "name": "xcrypt",
3747++ "type": "bool"
3748++ },
3749++ {
3750++ "name": "tbm",
3751++ "type": "bool"
3752++ },
3753++ {
3754++ "name": "memory",
3755++ "type": "link<qemu:memory-region>"
3756++ },
3757++ {
3758++ "name": "kvm-pv-eoi",
3759++ "type": "bool"
3760++ },
3761++ {
3762++ "name": "lm",
3763++ "type": "bool"
3764++ },
3765++ {
3766++ "name": "pae",
3767++ "type": "bool"
3768++ },
3769++ {
3770++ "name": "ssse3",
3771++ "type": "bool"
3772++ },
3773++ {
3774++ "name": "hv-runtime",
3775++ "type": "bool"
3776++ },
3777++ {
3778++ "name": "phe",
3779++ "type": "bool"
3780++ },
3781++ {
3782++ "name": "host-phys-bits",
3783++ "type": "bool"
3784++ },
3785++ {
3786++ "name": "perfctr_nb",
3787++ "type": "bool"
3788++ },
3789++ {
3790++ "name": "arat",
3791++ "type": "bool"
3792++ },
3793++ {
3794++ "name": "avx512vbmi2",
3795++ "type": "bool"
3796++ },
3797++ {
3798++ "name": "perfctr_core",
3799++ "type": "bool"
3800++ },
3801++ {
3802++ "name": "kvm_asyncpf",
3803++ "type": "bool"
3804++ },
3805++ {
3806++ "name": "x2apic",
3807++ "type": "bool"
3808++ },
3809++ {
3810++ "name": "npt",
3811++ "type": "bool"
3812++ },
3813++ {
3814++ "name": "avx512ifma",
3815++ "type": "bool"
3816++ },
3817++ {
3818++ "name": "model-id",
3819++ "type": "string"
3820++ },
3821++ {
3822++ "name": "hv-evmcs",
3823++ "type": "bool"
3824++ },
3825++ {
3826++ "name": "tsc",
3827++ "type": "bool"
3828++ },
3829++ {
3830++ "name": "pmm-en",
3831++ "type": "bool"
3832++ },
3833++ {
3834++ "name": "dca",
3835++ "type": "bool"
3836++ },
3837++ {
3838++ "name": "ia64",
3839++ "type": "bool"
3840++ },
3841++ {
3842++ "name": "perfctr-core",
3843++ "type": "bool"
3844++ },
3845++ {
3846++ "name": "pmu",
3847++ "type": "bool"
3848++ },
3849++ {
3850++ "name": "kvmclock",
3851++ "type": "bool"
3852++ },
3853++ {
3854++ "name": "pn",
3855++ "type": "bool"
3856++ },
3857++ {
3858++ "name": "pconfig",
3859++ "type": "bool"
3860++ },
3861++ {
3862++ "name": "invtsc",
3863++ "type": "bool"
3864++ },
3865++ {
3866++ "name": "avx512cd",
3867++ "type": "bool"
3868++ },
3869++ {
3870++ "name": "md-clear",
3871++ "type": "bool"
3872++ },
3873++ {
3874++ "name": "cmp-legacy",
3875++ "type": "bool"
3876++ },
3877++ {
3878++ "name": "cx16",
3879++ "type": "bool"
3880++ },
3881++ {
3882++ "name": "avx512dq",
3883++ "type": "bool"
3884++ },
3885++ {
3886++ "name": "abm",
3887++ "type": "bool"
3888++ },
3889++ {
3890++ "name": "kvm-pv-ipi",
3891++ "type": "bool"
3892++ },
3893++ {
3894++ "name": "fxsr-opt",
3895++ "type": "bool"
3896++ },
3897++ {
3898++ "name": "skip-l1dfl-vmentry",
3899++ "type": "bool"
3900++ },
3901++ {
3902++ "name": "fill-mtrr-mask",
3903++ "type": "bool"
3904++ },
3905++ {
3906++ "name": "x-migrate-smi-count",
3907++ "type": "bool"
3908++ },
3909++ {
3910++ "name": "pcid",
3911++ "type": "bool"
3912++ },
3913++ {
3914++ "name": "rdpid",
3915++ "type": "bool"
3916++ },
3917++ {
3918++ "name": "wbnoinvd",
3919++ "type": "bool"
3920++ },
3921++ {
3922++ "name": "filtered-features",
3923++ "type": "X86CPUFeatureWordInfo"
3924++ },
3925++ {
3926++ "name": "syscall",
3927++ "type": "bool"
3928++ },
3929++ {
3930++ "name": "pse",
3931++ "type": "bool"
3932++ },
3933++ {
3934++ "name": "hotpluggable",
3935++ "type": "bool"
3936++ },
3937++ {
3938++ "name": "tsc_scale",
3939++ "type": "bool"
3940++ },
3941++ {
3942++ "name": "mce",
3943++ "type": "bool"
3944++ },
3945++ {
3946++ "name": "xsaves",
3947++ "type": "bool"
3948++ },
3949++ {
3950++ "name": "node-id",
3951++ "type": "int32"
3952++ },
3953++ {
3954++ "name": "ibpb",
3955++ "type": "bool"
3956++ },
3957++ {
3958++ "name": "cldemote",
3959++ "type": "bool"
3960++ },
3961++ {
3962++ "name": "hv-tlbflush",
3963++ "type": "bool"
3964++ },
3965++ {
3966++ "name": "rtm",
3967++ "type": "bool"
3968++ },
3969++ {
3970++ "name": "lwp",
3971++ "type": "bool"
3972++ },
3973++ {
3974++ "name": "kvm-steal-time",
3975++ "type": "bool"
3976++ },
3977++ {
3978++ "name": "cpuid-0xb",
3979++ "type": "bool"
3980++ },
3981++ {
3982++ "name": "nrip_save",
3983++ "type": "bool"
3984++ },
3985++ {
3986++ "name": "vme",
3987++ "type": "bool"
3988++ },
3989++ {
3990++ "name": "kvm-pv-unhalt",
3991++ "type": "bool"
3992++ },
3993++ {
3994++ "name": "kvm-no-smi-migration",
3995++ "type": "bool"
3996++ },
3997++ {
3998++ "name": "kvm_pv_unhalt",
3999++ "type": "bool"
4000++ },
4001++ {
4002++ "name": "svm",
4003++ "type": "bool"
4004++ },
4005++ {
4006++ "name": "lahf-lm",
4007++ "type": "bool"
4008++ },
4009++ {
4010++ "name": "kvm-hint-dedicated",
4011++ "type": "bool"
4012++ },
4013++ {
4014++ "name": "host-cache-info",
4015++ "type": "bool"
4016++ },
4017++ {
4018++ "name": "mca",
4019++ "type": "bool"
4020++ },
4021++ {
4022++ "name": "mtrr",
4023++ "type": "bool"
4024++ },
4025++ {
4026++ "name": "cid",
4027++ "type": "bool"
4028++ },
4029++ {
4030++ "name": "vmcb_clean",
4031++ "type": "bool"
4032++ },
4033++ {
4034++ "name": "pfthreshold",
4035++ "type": "bool"
4036++ },
4037++ {
4038++ "name": "pmm",
4039++ "type": "bool"
4040++ },
4041++ {
4042++ "name": "tcg-cpuid",
4043++ "type": "bool"
4044++ },
4045++ {
4046++ "name": "x-hv-max-vps",
4047++ "type": "int32"
4048++ },
4049++ {
4050++ "name": "tm",
4051++ "type": "bool"
4052++ },
4053++ {
4054++ "name": "pbe",
4055++ "type": "bool"
4056++ },
4057++ {
4058++ "name": "apic-id",
4059++ "type": "uint32"
4060++ },
4061++ {
4062++ "name": "fpu",
4063++ "type": "bool"
4064++ },
4065++ {
4066++ "name": "l3-cache",
4067++ "type": "bool"
4068++ },
4069++ {
4070++ "name": "skinit",
4071++ "type": "bool"
4072++ },
4073++ {
4074++ "name": "sep",
4075++ "type": "bool"
4076++ },
4077++ {
4078++ "name": "nx",
4079++ "type": "bool"
4080++ },
4081++ {
4082++ "name": "ds-cpl",
4083++ "type": "bool"
4084++ },
4085++ {
4086++ "name": "pause-filter",
4087++ "type": "bool"
4088++ },
4089++ {
4090++ "name": "pause_filter",
4091++ "type": "bool"
4092++ },
4093++ {
4094++ "name": "nodeid-msr",
4095++ "type": "bool"
4096++ },
4097++ {
4098++ "name": "smap",
4099++ "type": "bool"
4100++ },
4101++ {
4102++ "name": "xlevel",
4103++ "type": "uint32"
4104++ },
4105++ {
4106++ "name": "cr8legacy",
4107++ "type": "bool"
4108++ },
4109++ {
4110++ "name": "cmp_legacy",
4111++ "type": "bool"
4112++ },
4113++ {
4114++ "name": "virt-ssbd",
4115++ "type": "bool"
4116++ },
4117++ {
4118++ "name": "umip",
4119++ "type": "bool"
4120++ },
4121++ {
4122++ "name": "avx512er",
4123++ "type": "bool"
4124++ },
4125++ {
4126++ "name": "xstore-en",
4127++ "type": "bool"
4128++ },
4129++ {
4130++ "name": "avx512vl",
4131++ "type": "bool"
4132++ },
4133++ {
4134++ "name": "rsba",
4135++ "type": "bool"
4136++ },
4137++ {
4138++ "name": "cmov",
4139++ "type": "bool"
4140++ },
4141++ {
4142++ "name": "xcrypt-en",
4143++ "type": "bool"
4144++ },
4145++ {
4146++ "name": "tm2",
4147++ "type": "bool"
4148++ },
4149++ {
4150++ "name": "hv-frequencies",
4151++ "type": "bool"
4152++ },
4153++ {
4154++ "name": "fxsr_opt",
4155++ "type": "bool"
4156++ },
4157++ {
4158++ "name": "hotplugged",
4159++ "type": "bool"
4160++ },
4161++ {
4162++ "name": "fsgsbase",
4163++ "type": "bool"
4164++ },
4165++ {
4166++ "name": "x-hv-synic-kvm-only",
4167++ "type": "bool"
4168++ },
4169++ {
4170++ "name": "avx512bw",
4171++ "type": "bool"
4172++ },
4173++ {
4174++ "name": "tsc-frequency",
4175++ "type": "int"
4176++ },
4177++ {
4178++ "name": "smx",
4179++ "type": "bool"
4180++ },
4181++ {
4182++ "name": "lbrv",
4183++ "type": "bool"
4184++ },
4185++ {
4186++ "name": "hle",
4187++ "type": "bool"
4188++ },
4189++ {
4190++ "name": "monitor",
4191++ "type": "bool"
4192++ },
4193++ {
4194++ "name": "tce",
4195++ "type": "bool"
4196++ },
4197++ {
4198++ "name": "sse4a",
4199++ "type": "bool"
4200++ },
4201++ {
4202++ "name": "vpclmulqdq",
4203++ "type": "bool"
4204++ },
4205++ {
4206++ "name": "tsc-scale",
4207++ "type": "bool"
4208++ },
4209++ {
4210++ "name": "kvm-pv-tlb-flush",
4211++ "type": "bool"
4212++ },
4213++ {
4214++ "name": "i64",
4215++ "type": "bool"
4216++ },
4217++ {
4218++ "name": "adx",
4219++ "type": "bool"
4220++ },
4221++ {
4222++ "name": "crash-information",
4223++ "type": "GuestPanicInformation"
4224++ },
4225++ {
4226++ "name": "ffxsr",
4227++ "type": "bool"
4228++ },
4229++ {
4230++ "name": "amd-no-ssb",
4231++ "type": "bool"
4232++ },
4233++ {
4234++ "name": "min-level",
4235++ "type": "uint32"
4236++ },
4237++ {
4238++ "name": "full-cpuid-auto-level",
4239++ "type": "bool"
4240++ },
4241++ {
4242++ "name": "svm_lock",
4243++ "type": "bool"
4244++ },
4245++ {
4246++ "name": "ssb-no",
4247++ "type": "bool"
4248++ },
4249++ {
4250++ "name": "msr",
4251++ "type": "bool"
4252++ },
4253++ {
4254++ "name": "clflush",
4255++ "type": "bool"
4256++ },
4257++ {
4258++ "name": "pclmulqdq",
4259++ "type": "bool"
4260++ },
4261++ {
4262++ "name": "xlevel2",
4263++ "type": "uint32"
4264++ },
4265++ {
4266++ "name": "mpx",
4267++ "type": "bool"
4268++ },
4269++ {
4270++ "name": "extapic",
4271++ "type": "bool"
4272++ },
4273++ {
4274++ "name": "hv-stimer",
4275++ "type": "bool"
4276++ },
4277++ {
4278++ "name": "xop",
4279++ "type": "bool"
4280++ },
4281++ {
4282++ "name": "smep",
4283++ "type": "bool"
4284++ },
4285++ {
4286++ "name": "xsavec",
4287++ "type": "bool"
4288++ },
4289++ {
4290++ "name": "hv-synic",
4291++ "type": "bool"
4292++ },
4293++ {
4294++ "name": "cx8",
4295++ "type": "bool"
4296++ },
4297++ {
4298++ "name": "pku",
4299++ "type": "bool"
4300++ },
4301++ {
4302++ "name": "kvm",
4303++ "type": "bool"
4304++ },
4305++ {
4306++ "name": "sse4-2",
4307++ "type": "bool"
4308++ },
4309++ {
4310++ "name": "vmcb-clean",
4311++ "type": "bool"
4312++ },
4313++ {
4314++ "name": "hv-reenlightenment",
4315++ "type": "bool"
4316++ },
4317++ {
4318++ "name": "svm-lock",
4319++ "type": "bool"
4320++ },
4321++ {
4322++ "name": "sse4-1",
4323++ "type": "bool"
4324++ },
4325++ {
4326++ "name": "lahf_lm",
4327++ "type": "bool"
4328++ },
4329++ {
4330++ "name": "legacy-cache",
4331++ "type": "bool"
4332++ },
4333++ {
4334++ "name": "sse",
4335++ "type": "bool"
4336++ },
4337++ {
4338++ "name": "hv-vpindex",
4339++ "type": "bool"
4340++ },
4341++ {
4342++ "name": "ds",
4343++ "type": "bool"
4344++ },
4345++ {
4346++ "name": "osvw",
4347++ "type": "bool"
4348++ },
4349++ {
4350++ "name": "kvm_steal_time",
4351++ "type": "bool"
4352++ },
4353++ {
4354++ "name": "kvm_pv_eoi",
4355++ "type": "bool"
4356++ },
4357++ {
4358++ "name": "acpi",
4359++ "type": "bool"
4360++ },
4361++ {
4362++ "name": "nrip-save",
4363++ "type": "bool"
4364++ },
4365++ {
4366++ "name": "gfni",
4367++ "type": "bool"
4368++ },
4369++ {
4370++ "name": "ds_cpl",
4371++ "type": "bool"
4372++ },
4373++ {
4374++ "name": "kvm-mmu",
4375++ "type": "bool"
4376++ },
4377++ {
4378++ "name": "avx512bitalg",
4379++ "type": "bool"
4380++ },
4381++ {
4382++ "name": "rdseed",
4383++ "type": "bool"
4384++ },
4385++ {
4386++ "name": "sha-ni",
4387++ "type": "bool"
4388++ },
4389++ {
4390++ "name": "ace2",
4391++ "type": "bool"
4392++ },
4393++ {
4394++ "name": "lmce",
4395++ "type": "bool"
4396++ },
4397++ {
4398++ "name": "nodeid_msr",
4399++ "type": "bool"
4400++ },
4401++ {
4402++ "name": "sse3",
4403++ "type": "bool"
4404++ },
4405++ {
4406++ "name": "f16c",
4407++ "type": "bool"
4408++ },
4409++ {
4410++ "name": "3dnowprefetch",
4411++ "type": "bool"
4412++ },
4413++ {
4414++ "name": "xd",
4415++ "type": "bool"
4416++ },
4417++ {
4418++ "name": "avx",
4419++ "type": "bool"
4420++ },
4421++ {
4422++ "name": "topoext",
4423++ "type": "bool"
4424++ },
4425++ {
4426++ "name": "avx512vnni",
4427++ "type": "bool"
4428++ },
4429++ {
4430++ "name": "rdctl-no",
4431++ "type": "bool"
4432++ },
4433++ {
4434++ "name": "mmx",
4435++ "type": "bool"
4436++ },
4437++ {
4438++ "name": "avx512-4fmaps",
4439++ "type": "bool"
4440++ },
4441++ {
4442++ "name": "level",
4443++ "type": "uint32"
4444++ },
4445++ {
4446++ "name": "sse2",
4447++ "type": "bool"
4448++ },
4449++ {
4450++ "name": "pni",
4451++ "type": "bool"
4452++ },
4453++ {
4454++ "name": "movbe",
4455++ "type": "bool"
4456++ },
4457++ {
4458++ "name": "mmxext",
4459++ "type": "bool"
4460++ },
4461++ {
4462++ "name": "flushbyasid",
4463++ "type": "bool"
4464++ },
4465++ {
4466++ "name": "rdtscp",
4467++ "type": "bool"
4468++ },
4469++ {
4470++ "name": "clwb",
4471++ "type": "bool"
4472++ },
4473++ {
4474++ "name": "kvm-asyncpf",
4475++ "type": "bool"
4476++ },
4477++ {
4478++ "name": "decodeassists",
4479++ "type": "bool"
4480++ },
4481++ {
4482++ "name": "pat",
4483++ "type": "bool"
4484++ },
4485++ {
4486++ "name": "invpcid",
4487++ "type": "bool"
4488++ },
4489++ {
4490++ "name": "pdpe1gb",
4491++ "type": "bool"
4492++ },
4493++ {
4494++ "name": "parent_bus",
4495++ "type": "link<bus>"
4496++ },
4497++ {
4498++ "name": "tsc-adjust",
4499++ "type": "bool"
4500++ },
4501++ {
4502++ "name": "ht",
4503++ "type": "bool"
4504++ },
4505++ {
4506++ "name": "xtpr",
4507++ "type": "bool"
4508++ },
4509++ {
4510++ "name": "tsc_adjust",
4511++ "type": "bool"
4512++ },
4513++ {
4514++ "name": "ssbd",
4515++ "type": "bool"
4516++ },
4517++ {
4518++ "name": "3dnowext",
4519++ "type": "bool"
4520++ },
4521++ {
4522++ "name": "clflushopt",
4523++ "type": "bool"
4524++ },
4525++ {
4526++ "name": "hv-vendor-id",
4527++ "type": "str"
4528++ },
4529++ {
4530++ "name": "xsave",
4531++ "type": "bool"
4532++ },
4533++ {
4534++ "name": "pdcm",
4535++ "type": "bool"
4536++ },
4537++ {
4538++ "name": "hv-crash",
4539++ "type": "bool"
4540++ },
4541++ {
4542++ "name": "est",
4543++ "type": "bool"
4544++ },
4545++ {
4546++ "name": "vendor",
4547++ "type": "string"
4548++ },
4549++ {
4550++ "name": "pge",
4551++ "type": "bool"
4552++ },
4553++ {
4554++ "name": "pcommit",
4555++ "type": "bool"
4556++ },
4557++ {
4558++ "name": "ibs",
4559++ "type": "bool"
4560++ },
4561++ {
4562++ "name": "tsc-deadline",
4563++ "type": "bool"
4564++ },
4565++ {
4566++ "name": "misalignsse",
4567++ "type": "bool"
4568++ },
4569++ {
4570++ "name": "kvmclock-stable-bit",
4571++ "type": "bool"
4572++ },
4573++ {
4574++ "name": "check",
4575++ "type": "bool"
4576++ },
4577++ {
4578++ "name": "hv-time",
4579++ "type": "bool"
4580++ },
4581++ {
4582++ "name": "perfctr-nb",
4583++ "type": "bool"
4584++ },
4585++ {
4586++ "name": "migratable",
4587++ "type": "bool"
4588++ },
4589++ {
4590++ "name": "feature-words",
4591++ "type": "X86CPUFeatureWordInfo"
4592++ },
4593++ {
4594++ "name": "phys-bits",
4595++ "type": "uint32"
4596++ },
4597++ {
4598++ "name": "apic",
4599++ "type": "bool"
4600++ },
4601++ {
4602++ "name": "avx512vbmi",
4603++ "type": "bool"
4604++ },
4605++ {
4606++ "name": "thread-id",
4607++ "type": "int32"
4608++ },
4609++ {
4610++ "name": "min-xlevel",
4611++ "type": "uint32"
4612++ },
4613++ {
4614++ "name": "socket-id",
4615++ "type": "int32"
4616++ },
4617++ {
4618++ "name": "avx512f",
4619++ "type": "bool"
4620++ },
4621++ {
4622++ "name": "arch-capabilities",
4623++ "type": "bool"
4624++ },
4625++ {
4626++ "name": "bmi2",
4627++ "type": "bool"
4628++ },
4629++ {
4630++ "name": "intel-pt",
4631++ "type": "bool"
4632++ },
4633++ {
4634++ "name": "wdt",
4635++ "type": "bool"
4636++ },
4637++ {
4638++ "name": "ace2-en",
4639++ "type": "bool"
4640++ },
4641++ {
4642++ "name": "avx512pf",
4643++ "type": "bool"
4644++ },
4645++ {
4646++ "name": "bmi1",
4647++ "type": "bool"
4648++ },
4649++ {
4650++ "name": "enforce",
4651++ "type": "bool"
4652++ },
4653++ {
4654++ "name": "kvm-nopiodelay",
4655++ "type": "bool"
4656++ },
4657++ {
4658++ "name": "sse4.2",
4659++ "type": "bool"
4660++ },
4661++ {
4662++ "name": "ibrs-all",
4663++ "type": "bool"
4664++ },
4665++ {
4666++ "name": "3dnow",
4667++ "type": "bool"
4668++ },
4669++ {
4670++ "name": "vmx",
4671++ "type": "bool"
4672++ },
4673++ {
4674++ "name": "la57",
4675++ "type": "bool"
4676++ },
4677++ {
4678++ "name": "xsaveopt",
4679++ "type": "bool"
4680++ },
4681++ {
4682++ "name": "sse4.1",
4683++ "type": "bool"
4684++ },
4685++ {
4686++ "name": "xgetbv1",
4687++ "type": "bool"
4688++ },
4689++ {
4690++ "name": "hv-relaxed",
4691++ "type": "bool"
4692++ },
4693++ {
4694++ "name": "spec-ctrl",
4695++ "type": "bool"
4696++ },
4697++ {
4698++ "name": "fxsr",
4699++ "type": "bool"
4700++ },
4701++ {
4702++ "name": "hv-vapic",
4703++ "type": "bool"
4704++ },
4705++ {
4706++ "name": "phe-en",
4707++ "type": "bool"
4708++ },
4709++ {
4710++ "name": "hv-ipi",
4711++ "type": "bool"
4712++ },
4713++ {
4714++ "name": "sse4_2",
4715++ "type": "bool"
4716++ },
4717++ {
4718++ "name": "hypervisor",
4719++ "type": "bool"
4720++ },
4721++ {
4722++ "name": "aes",
4723++ "type": "bool"
4724++ },
4725++ {
4726++ "name": "amd-ssbd",
4727++ "type": "bool"
4728++ },
4729++ {
4730++ "name": "core-id",
4731++ "type": "int32"
4732++ },
4733++ {
4734++ "name": "de",
4735++ "type": "bool"
4736++ },
4737++ {
4738++ "name": "ss",
4739++ "type": "bool"
4740++ },
4741++ {
4742++ "name": "fma",
4743++ "type": "bool"
4744++ }
4745++ ],
4746++ "id": "libvirt-37"
4747++}
4748++
4749++{
4750++ "execute": "query-machines",
4751++ "id": "libvirt-38"
4752++}
4753++
4754++{
4755++ "return": [
4756++ {
4757+ "hotpluggable-cpus": true,
4758+ "name": "isapc",
4759+ "cpu-max": 1
4760+@@ -5176,12 +6286,12 @@
4761+ "cpu-max": 255
4762+ }
4763+ ],
4764+- "id": "libvirt-37"
4765++ "id": "libvirt-38"
4766+ }
4767+
4768+ {
4769+ "execute": "query-cpu-definitions",
4770+- "id": "libvirt-38"
4771++ "id": "libvirt-39"
4772+ }
4773+
4774+ {
4775+@@ -5700,12 +6810,12 @@
4776+ "migration-safe": true
4777+ }
4778+ ],
4779+- "id": "libvirt-38"
4780++ "id": "libvirt-39"
4781+ }
4782+
4783+ {
4784+ "execute": "query-tpm-models",
4785+- "id": "libvirt-39"
4786++ "id": "libvirt-40"
4787+ }
4788+
4789+ {
4790+@@ -5713,12 +6823,12 @@
4791+ "tpm-crb",
4792+ "tpm-tis"
4793+ ],
4794+- "id": "libvirt-39"
4795++ "id": "libvirt-40"
4796+ }
4797+
4798+ {
4799+ "execute": "query-tpm-types",
4800+- "id": "libvirt-40"
4801++ "id": "libvirt-41"
4802+ }
4803+
4804+ {
4805+@@ -5726,12 +6836,12 @@
4806+ "passthrough",
4807+ "emulator"
4808+ ],
4809+- "id": "libvirt-40"
4810++ "id": "libvirt-41"
4811+ }
4812+
4813+ {
4814+ "execute": "query-command-line-options",
4815+- "id": "libvirt-41"
4816++ "id": "libvirt-42"
4817+ }
4818+
4819+ {
4820+@@ -7005,12 +8115,12 @@
4821+ "option": "drive"
4822+ }
4823+ ],
4824+- "id": "libvirt-41"
4825++ "id": "libvirt-42"
4826+ }
4827+
4828+ {
4829+ "execute": "query-migrate-capabilities",
4830+- "id": "libvirt-42"
4831++ "id": "libvirt-43"
4832+ }
4833+
4834+ {
4835+@@ -7080,12 +8190,12 @@
4836+ "capability": "late-block-activate"
4837+ }
4838+ ],
4839+- "id": "libvirt-42"
4840++ "id": "libvirt-43"
4841+ }
4842+
4843+ {
4844+ "execute": "query-qmp-schema",
4845+- "id": "libvirt-43"
4846++ "id": "libvirt-44"
4847+ }
4848+
4849+ {
4850+@@ -19270,7 +20380,7 @@
4851+ "meta-type": "object"
4852+ }
4853+ ],
4854+- "id": "libvirt-43"
4855++ "id": "libvirt-44"
4856+ }
4857+
4858+ {
4859+@@ -19281,7 +20391,7 @@
4860+ "name": "host"
4861+ }
4862+ },
4863+- "id": "libvirt-44"
4864++ "id": "libvirt-45"
4865+ }
4866+
4867+ {
4868+@@ -19483,7 +20593,7 @@
4869+ }
4870+ }
4871+ },
4872+- "id": "libvirt-44"
4873++ "id": "libvirt-45"
4874+ }
4875+
4876+ {
4877+@@ -19687,7 +20797,7 @@
4878+ }
4879+ }
4880+ },
4881+- "id": "libvirt-45"
4882++ "id": "libvirt-46"
4883+ }
4884+
4885+ {
4886+@@ -19962,7 +21072,7 @@
4887+ }
4888+ }
4889+ },
4890+- "id": "libvirt-45"
4891++ "id": "libvirt-46"
4892+ }
4893+
4894+ {
4895+@@ -19976,7 +21086,7 @@
4896+ }
4897+ }
4898+ },
4899+- "id": "libvirt-46"
4900++ "id": "libvirt-47"
4901+ }
4902+
4903+ {
4904+@@ -20178,7 +21288,7 @@
4905+ }
4906+ }
4907+ },
4908+- "id": "libvirt-46"
4909++ "id": "libvirt-47"
4910+ }
4911+
4912+ {
4913+@@ -20382,7 +21492,7 @@
4914+ }
4915+ }
4916+ },
4917+- "id": "libvirt-47"
4918++ "id": "libvirt-48"
4919+ }
4920+
4921+ {
4922+@@ -20657,16 +21767,16 @@
4923+ }
4924+ }
4925+ },
4926+- "id": "libvirt-47"
4927++ "id": "libvirt-48"
4928+ }
4929+
4930+ {
4931+ "execute": "query-sev-capabilities",
4932+- "id": "libvirt-48"
4933++ "id": "libvirt-49"
4934+ }
4935+
4936+ {
4937+- "id": "libvirt-48",
4938++ "id": "libvirt-49",
4939+ "error": {
4940+ "class": "GenericError",
4941+ "desc": "SEV feature is not available"
4942+--- a/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
4943++++ b/tests/qemucapabilitiesdata/caps_4.0.0.x86_64.replies
4944+@@ -5189,13 +5189,1139 @@
4945+ }
4946+
4947+ {
4948+- "execute": "query-machines",
4949++ "execute": "qom-list-properties",
4950++ "arguments": {
4951++ "typename": "max-x86_64-cpu"
4952++ },
4953+ "id": "libvirt-37"
4954+ }
4955+
4956+ {
4957+ "return": [
4958+ {
4959++ "name": "type",
4960++ "type": "string"
4961++ },
4962++ {
4963++ "name": "sse4_1",
4964++ "type": "bool"
4965++ },
4966++ {
4967++ "name": "popcnt",
4968++ "type": "bool"
4969++ },
4970++ {
4971++ "name": "kvm_mmu",
4972++ "type": "bool"
4973++ },
4974++ {
4975++ "name": "dtes64",
4976++ "type": "bool"
4977++ },
4978++ {
4979++ "name": "min-xlevel2",
4980++ "type": "uint32"
4981++ },
4982++ {
4983++ "name": "xstore",
4984++ "type": "bool"
4985++ },
4986++ {
4987++ "name": "stepping",
4988++ "type": "int"
4989++ },
4990++ {
4991++ "name": "pse36",
4992++ "type": "bool"
4993++ },
4994++ {
4995++ "name": "avx512-4vnniw",
4996++ "type": "bool"
4997++ },
4998++ {
4999++ "name": "fma4",
5000++ "type": "bool"
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches