[PATCH 0/4] bhyve: framebuffer resolution and VNC password
by Fabian Freyer
Add support for setting the bhyve framebuffer resolution and probe
whether bhyve supports VNC password authentication. If it does, allow
setting the password.
While we're here, also add support for parsing bhyve's framebuffer
argument string.
Fabian Freyer (4):
bhyve: support parsing fbuf PCI device
bhyve: add support for setting fbuf resolution
bhyve: probe for VNC password capability
bhyve: add VNC password support
docs/formatdomain.html.in | 2 +-
docs/news.xml | 20 +++
src/bhyve/bhyve_capabilities.c | 16 ++-
src/bhyve/bhyve_capabilities.h | 1 +
src/bhyve/bhyve_command.c | 36 ++++--
src/bhyve/bhyve_parse_command.c | 116 +++++++++++++++++-
src/libvirt_private.syms | 1 +
.../bhyveargv2xml-vnc-listen.args | 10 ++
.../bhyveargv2xml-vnc-listen.xml | 22 ++++
.../bhyveargv2xml-vnc-password.args | 10 ++
.../bhyveargv2xml-vnc-password.xml | 22 ++++
.../bhyveargv2xml-vnc-resolution.args | 10 ++
.../bhyveargv2xml-vnc-resolution.xml | 24 ++++
.../bhyveargv2xml-vnc-vga-io.args | 10 ++
.../bhyveargv2xml-vnc-vga-io.xml | 22 ++++
.../bhyveargv2xml-vnc-vga-off.args | 10 ++
.../bhyveargv2xml-vnc-vga-off.xml | 23 ++++
.../bhyveargv2xml-vnc-vga-on.args | 10 ++
.../bhyveargv2xml-vnc-vga-on.xml | 23 ++++
.../bhyveargv2xmldata/bhyveargv2xml-vnc.args | 10 ++
tests/bhyveargv2xmldata/bhyveargv2xml-vnc.xml | 22 ++++
tests/bhyveargv2xmltest.c | 9 +-
.../bhyvexml2argv-vnc-password-comma.xml | 26 ++++
.../bhyvexml2argv-vnc-password.args | 12 ++
.../bhyvexml2argv-vnc-password.ldargs | 1 +
.../bhyvexml2argv-vnc-password.xml | 26 ++++
.../bhyvexml2argv-vnc-resolution.args | 10 ++
.../bhyvexml2argv-vnc-resolution.ldargs | 1 +
.../bhyvexml2argv-vnc-resolution.xml | 20 +++
tests/bhyvexml2argvtest.c | 8 +-
.../bhyvexml2xmlout-vnc-password.xml | 41 +++++++
.../bhyvexml2xmlout-vnc-resolution.xml | 28 +++++
tests/bhyvexml2xmltest.c | 2 +
33 files changed, 588 insertions(+), 16 deletions(-)
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-listen.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-listen.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-password.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-password.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-resolution.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-resolution.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-io.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-io.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-off.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-off.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-on.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc-vga-on.xml
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc.args
create mode 100644 tests/bhyveargv2xmldata/bhyveargv2xml-vnc.xml
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-password-comma.xml
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-password.args
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-password.ldargs
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-password.xml
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-resolution.args
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-resolution.ldargs
create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-vnc-resolution.xml
create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-password.xml
create mode 100644 tests/bhyvexml2xmloutdata/bhyvexml2xmlout-vnc-resolution.xml
--
2.19.2
4 years, 6 months
[libvirt PATCH] cputest: Add data for AMD Ryzen 9 3900X 12-Core Processor
by Jiri Denemark
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
tests/cputest.c | 1 +
...4-cpuid-Ryzen-9-3900X-12-Core-disabled.xml | 8 +
...64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml | 10 +
...6_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml | 28 +
...86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml | 29 +
...86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml | 24 +
.../x86_64-cpuid-Ryzen-9-3900X-12-Core.json | 1838 +++++++++++++++++
.../x86_64-cpuid-Ryzen-9-3900X-12-Core.sig | 4 +
.../x86_64-cpuid-Ryzen-9-3900X-12-Core.xml | 66 +
9 files changed, 2008 insertions(+)
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-disabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.json
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.sig
create mode 100644 tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.xml
diff --git a/tests/cputest.c b/tests/cputest.c
index 21f47a6853..2bef3eb52f 100644
--- a/tests/cputest.c
+++ b/tests/cputest.c
@@ -1252,6 +1252,7 @@ mymain(void)
DO_TEST_CPUID(VIR_ARCH_X86_64, "Pentium-P6100", JSON_NONE);
DO_TEST_CPUID(VIR_ARCH_X86_64, "Phenom-B95", JSON_HOST);
DO_TEST_CPUID(VIR_ARCH_X86_64, "Ryzen-7-1800X-Eight-Core", JSON_HOST);
+ DO_TEST_CPUID(VIR_ARCH_X86_64, "Ryzen-9-3900X-12-Core", JSON_MODELS);
DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-5110", JSON_NONE);
DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E3-1225-v5", JSON_MODELS);
DO_TEST_CPUID(VIR_ARCH_X86_64, "Xeon-E3-1245-v5", JSON_MODELS);
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-disabled.xml
new file mode 100644
index 0000000000..7feb55f0b7
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-disabled.xml
@@ -0,0 +1,8 @@
+<!-- Features disabled by QEMU -->
+<cpudata arch='x86'>
+ <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x08000008' edx='0x10000000'/>
+ <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x00001000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000f' ecx_in='0x01' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000006'/>
+ <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x01423408' edx='0x00000000'/>
+ <cpuid eax_in='0x80000007' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000100'/>
+</cpudata>
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
new file mode 100644
index 0000000000..def2fed823
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
@@ -0,0 +1,10 @@
+<!-- Features enabled by QEMU -->
+<cpudata arch='x86'>
+ <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0xf7f83203' edx='0x078bfbff'/>
+ <cpuid eax_in='0x00000006' ecx_in='0x00' eax='0x00000004' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x219c01ab' ecx='0x00000004' edx='0xa8000000'/>
+ <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x0000000f' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x008003f7' edx='0x2e500800'/>
+ <cpuid eax_in='0x80000008' ecx_in='0x00' eax='0x00000000' ebx='0x03001201' ecx='0x00000000' edx='0x00000000'/>
+ <msr index='0x10a' edx='0x00000000' eax='0x00000029'/>
+</cpudata>
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
new file mode 100644
index 0000000000..717e2fbfae
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
@@ -0,0 +1,28 @@
+<cpu mode='custom' match='exact'>
+ <model fallback='forbid'>EPYC-IBPB</model>
+ <vendor>AMD</vendor>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='osxsave'/>
+ <feature policy='require' name='cmt'/>
+ <feature policy='require' name='clwb'/>
+ <feature policy='require' name='umip'/>
+ <feature policy='require' name='xsaves'/>
+ <feature policy='require' name='mbm_total'/>
+ <feature policy='require' name='mbm_local'/>
+ <feature policy='require' name='cmp_legacy'/>
+ <feature policy='require' name='extapic'/>
+ <feature policy='require' name='ibs'/>
+ <feature policy='require' name='skinit'/>
+ <feature policy='require' name='wdt'/>
+ <feature policy='require' name='tce'/>
+ <feature policy='require' name='topoext'/>
+ <feature policy='require' name='perfctr_core'/>
+ <feature policy='require' name='perfctr_nb'/>
+ <feature policy='require' name='invtsc'/>
+ <feature policy='require' name='clzero'/>
+ <feature policy='require' name='wbnoinvd'/>
+ <feature policy='require' name='amd-ssbd'/>
+ <feature policy='require' name='rdctl-no'/>
+ <feature policy='require' name='skip-l1dfl-vmentry'/>
+ <feature policy='require' name='mds-no'/>
+</cpu>
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
new file mode 100644
index 0000000000..81930a84e7
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
@@ -0,0 +1,29 @@
+<cpu>
+ <arch>x86_64</arch>
+ <model>EPYC-IBPB</model>
+ <vendor>AMD</vendor>
+ <feature name='ht'/>
+ <feature name='osxsave'/>
+ <feature name='cmt'/>
+ <feature name='clwb'/>
+ <feature name='umip'/>
+ <feature name='xsaves'/>
+ <feature name='mbm_total'/>
+ <feature name='mbm_local'/>
+ <feature name='cmp_legacy'/>
+ <feature name='extapic'/>
+ <feature name='ibs'/>
+ <feature name='skinit'/>
+ <feature name='wdt'/>
+ <feature name='tce'/>
+ <feature name='topoext'/>
+ <feature name='perfctr_core'/>
+ <feature name='perfctr_nb'/>
+ <feature name='invtsc'/>
+ <feature name='clzero'/>
+ <feature name='wbnoinvd'/>
+ <feature name='amd-ssbd'/>
+ <feature name='rdctl-no'/>
+ <feature name='skip-l1dfl-vmentry'/>
+ <feature name='mds-no'/>
+</cpu>
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
new file mode 100644
index 0000000000..5f495e0452
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
@@ -0,0 +1,24 @@
+<cpu mode='custom' match='exact'>
+ <model fallback='forbid'>EPYC-IBPB</model>
+ <vendor>AMD</vendor>
+ <feature policy='require' name='x2apic'/>
+ <feature policy='require' name='tsc-deadline'/>
+ <feature policy='require' name='hypervisor'/>
+ <feature policy='require' name='tsc_adjust'/>
+ <feature policy='require' name='clwb'/>
+ <feature policy='require' name='umip'/>
+ <feature policy='require' name='stibp'/>
+ <feature policy='require' name='arch-capabilities'/>
+ <feature policy='require' name='ssbd'/>
+ <feature policy='require' name='xsaves'/>
+ <feature policy='require' name='cmp_legacy'/>
+ <feature policy='require' name='perfctr_core'/>
+ <feature policy='require' name='clzero'/>
+ <feature policy='require' name='wbnoinvd'/>
+ <feature policy='require' name='amd-ssbd'/>
+ <feature policy='require' name='virt-ssbd'/>
+ <feature policy='require' name='rdctl-no'/>
+ <feature policy='require' name='skip-l1dfl-vmentry'/>
+ <feature policy='require' name='mds-no'/>
+ <feature policy='disable' name='monitor'/>
+</cpu>
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.json b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.json
new file mode 100644
index 0000000000..fbdf1a794a
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.json
@@ -0,0 +1,1838 @@
+{
+ "return": {
+ "model": {
+ "name": "base",
+ "props": {
+ "vmx-entry-load-rtit-ctl": false,
+ "phys-bits": 0,
+ "core-id": -1,
+ "xlevel": 2147483679,
+ "cmov": true,
+ "ia64": false,
+ "ssb-no": false,
+ "aes": true,
+ "vmx-apicv-xapic": false,
+ "mmx": true,
+ "arat": true,
+ "rdpid": true,
+ "vmx-page-walk-5": false,
+ "vmx-page-walk-4": false,
+ "vmx-desc-exit": false,
+ "gfni": false,
+ "ibrs-all": false,
+ "pause-filter": false,
+ "xsavec": true,
+ "intel-pt": false,
+ "vmx-cr8-store-exit": false,
+ "hv-frequencies": false,
+ "tsc-frequency": 0,
+ "vmx-rdseed-exit": false,
+ "xd": true,
+ "x-intel-pt-auto-level": true,
+ "hv-vendor-id": "",
+ "vmx-eptp-switching": false,
+ "kvm_asyncpf": true,
+ "kvm-asyncpf": true,
+ "perfctr_core": true,
+ "perfctr-core": true,
+ "mpx": false,
+ "avx512cd": false,
+ "pbe": false,
+ "decodeassists": false,
+ "vmx-exit-clear-bndcfgs": false,
+ "vmx-exit-load-efer": false,
+ "sse4_1": true,
+ "sse4-1": true,
+ "sse4.1": true,
+ "family": 23,
+ "legacy-cache": true,
+ "vmx-vmwrite-vmexit-fields": false,
+ "vmx-vnmi": false,
+ "vmx-true-ctls": false,
+ "host-phys-bits-limit": 0,
+ "vmx-ept-execonly": false,
+ "vmx-exit-save-efer": false,
+ "vmx-invept-all-context": false,
+ "vmware-cpuid-freq": true,
+ "wbnoinvd": true,
+ "avx512f": false,
+ "xcrypt": false,
+ "hv-runtime": false,
+ "hv-stimer-direct": false,
+ "mce": true,
+ "mca": true,
+ "msr": true,
+ "thread-id": -1,
+ "vmx-exit-load-pat": false,
+ "vmx-intr-exit": false,
+ "min-level": 16,
+ "vmx-flexpriority": false,
+ "xgetbv1": true,
+ "cid": false,
+ "hv-relaxed": false,
+ "avx512-bf16": false,
+ "ds": false,
+ "hv-crash": false,
+ "fxsr": true,
+ "vmx-cr8-load-exit": false,
+ "xsaveopt": true,
+ "vmx-apicv-vid": false,
+ "vmx-exit-save-pat": false,
+ "tsx-ctrl": false,
+ "xtpr": false,
+ "vmx-ple": false,
+ "hv-evmcs": false,
+ "avx512-vpopcntdq": false,
+ "phe": false,
+ "avx512vl": false,
+ "extapic": false,
+ "vmx-vmfunc": false,
+ "3dnowprefetch": true,
+ "vmx-activity-shutdown": false,
+ "avx512vbmi2": false,
+ "cr8legacy": true,
+ "vmx-encls-exit": false,
+ "stibp": true,
+ "vmx-msr-bitmap": false,
+ "cpuid-0xb": true,
+ "xcrypt-en": false,
+ "vmx-mwait-exit": false,
+ "kvm_pv_eoi": true,
+ "vmx-pml": false,
+ "apic-id": 4294967295,
+ "vmx-nmi-exit": false,
+ "vmx-invept-single-context-noglobals": false,
+ "pn": false,
+ "rsba": false,
+ "dca": false,
+ "vmx-unrestricted-guest": false,
+ "vendor": "AuthenticAMD",
+ "hv-ipi": false,
+ "vmx-cr3-store-noexit": false,
+ "pku": false,
+ "smx": false,
+ "cmp-legacy": true,
+ "cmp_legacy": true,
+ "node-id": -1,
+ "avx512-4fmaps": false,
+ "vmcb_clean": false,
+ "vmcb-clean": false,
+ "hle": false,
+ "amd-no-ssb": false,
+ "3dnowext": false,
+ "npt": true,
+ "rdctl-no": true,
+ "vmx-invvpid": false,
+ "memory": "/machine/unattached/system[0]",
+ "clwb": true,
+ "lbrv": false,
+ "adx": true,
+ "ss": false,
+ "pni": true,
+ "svm_lock": false,
+ "svm-lock": false,
+ "pfthreshold": false,
+ "smap": true,
+ "smep": true,
+ "vmx-invpcid-exit": false,
+ "x2apic": true,
+ "avx512vnni": false,
+ "avx512vbmi": false,
+ "vmx-apicv-x2apic": false,
+ "hv-stimer": false,
+ "kvm-pv-sched-yield": true,
+ "vmx-invlpg-exit": false,
+ "x-hv-synic-kvm-only": false,
+ "vmx-invvpid-all-context": false,
+ "i64": true,
+ "vmx-activity-hlt": false,
+ "flushbyasid": false,
+ "f16c": true,
+ "vmx-exit-ack-intr": false,
+ "ace2-en": false,
+ "pae": true,
+ "pat": true,
+ "sse": true,
+ "die-id": -1,
+ "vmx-tsc-offset": false,
+ "phe-en": false,
+ "kvm_nopiodelay": true,
+ "kvm-nopiodelay": true,
+ "tm": false,
+ "kvmclock-stable-bit": true,
+ "vmx-rdtsc-exit": false,
+ "hypervisor": true,
+ "vmx-rdtscp-exit": false,
+ "socket-id": -1,
+ "mds-no": true,
+ "pcommit": false,
+ "vmx-vpid": false,
+ "syscall": true,
+ "level": 16,
+ "avx512dq": false,
+ "x-migrate-smi-count": true,
+ "svm": true,
+ "full-cpuid-auto-level": true,
+ "hv-reset": false,
+ "invtsc": false,
+ "vmx-monitor-exit": false,
+ "sse3": true,
+ "sse2": true,
+ "ssbd": true,
+ "vmx-wbinvd-exit": false,
+ "est": false,
+ "kvm-poll-control": true,
+ "kvm_poll_control": true,
+ "avx512ifma": false,
+ "tm2": false,
+ "kvm-pv-eoi": true,
+ "kvm-pv-ipi": true,
+ "cx8": true,
+ "vmx-invvpid-single-addr": false,
+ "waitpkg": false,
+ "cldemote": false,
+ "vmx-ept": false,
+ "hv-reenlightenment": false,
+ "kvm_mmu": false,
+ "kvm-mmu": false,
+ "sse4-2": true,
+ "sse4.2": true,
+ "sse4_2": true,
+ "pge": true,
+ "fill-mtrr-mask": true,
+ "avx512bitalg": false,
+ "vmx-entry-load-bndcfgs": false,
+ "nodeid_msr": false,
+ "pdcm": false,
+ "vmx-exit-clear-rtit-ctl": false,
+ "model": 113,
+ "movbe": true,
+ "nrip_save": true,
+ "nrip-save": true,
+ "vmx-pause-exit": false,
+ "ssse3": true,
+ "kvm_pv_unhalt": true,
+ "sse4a": true,
+ "invpcid": false,
+ "pdpe1gb": true,
+ "tsc-deadline": true,
+ "skip-l1dfl-vmentry": true,
+ "vmx-exit-load-perf-global-ctrl": false,
+ "fma": true,
+ "cx16": true,
+ "de": true,
+ "enforce": false,
+ "stepping": 0,
+ "xsave": true,
+ "clflush": true,
+ "skinit": false,
+ "tsc": true,
+ "tce": false,
+ "fpu": true,
+ "ds-cpl": false,
+ "ds_cpl": false,
+ "ibs": false,
+ "fma4": false,
+ "host-phys-bits": false,
+ "vmx-exit-nosave-debugctl": false,
+ "vmx-invept": false,
+ "la57": false,
+ "osvw": true,
+ "check": true,
+ "hv-spinlocks": 4294967295,
+ "vmx-eptad": false,
+ "pmu": false,
+ "vmx-entry-noload-debugctl": false,
+ "pmm": false,
+ "apic": true,
+ "spec-ctrl": false,
+ "vmx-posted-intr": false,
+ "vmx-apicv-register": false,
+ "min-xlevel2": 0,
+ "tsc-adjust": true,
+ "tsc_adjust": true,
+ "kvm-steal-time": true,
+ "kvm_steal_time": true,
+ "kvmclock": true,
+ "vmx-zero-len-inject": false,
+ "l3-cache": true,
+ "pschange-mc-no": true,
+ "vmx-rdrand-exit": false,
+ "lwp": false,
+ "hv-passthrough": false,
+ "amd-ssbd": true,
+ "ibpb": true,
+ "xop": false,
+ "core-capability": false,
+ "avx": true,
+ "vmx-invept-single-context": false,
+ "movdiri": false,
+ "avx512bw": false,
+ "acpi": false,
+ "ace2": false,
+ "fsgsbase": true,
+ "hv-vapic": false,
+ "vmx-ept-1gb": false,
+ "vmx-ept-2mb": false,
+ "ht": false,
+ "vmx-io-exit": false,
+ "nx": true,
+ "pclmulqdq": true,
+ "mmxext": true,
+ "popcnt": true,
+ "vaes": false,
+ "xsaves": true,
+ "movdir64b": false,
+ "vmx-shadow-vmcs": false,
+ "tcg-cpuid": true,
+ "lm": true,
+ "vmx-exit-save-preemption-timer": false,
+ "vmx-entry-load-pat": false,
+ "vmx-entry-load-perf-global-ctrl": false,
+ "vmx-io-bitmap": false,
+ "vmx-store-lma": false,
+ "umip": true,
+ "vmx-movdr-exit": false,
+ "avx2": true,
+ "pse": true,
+ "pclmuldq": true,
+ "sep": true,
+ "vmx-cr3-load-noexit": false,
+ "virt-ssbd": true,
+ "x-hv-max-vps": -1,
+ "nodeid-msr": false,
+ "md-clear": false,
+ "split-lock-detect": false,
+ "kvm": true,
+ "misalignsse": true,
+ "min-xlevel": 2147483679,
+ "realized": false,
+ "kvm-pv-unhalt": true,
+ "bmi2": true,
+ "bmi1": true,
+ "tsc_scale": false,
+ "tsc-scale": false,
+ "topoext": false,
+ "hv-vpindex": false,
+ "hv-no-nonarch-coresharing": "off",
+ "vmx-preemption-timer": false,
+ "xlevel2": 0,
+ "clflushopt": true,
+ "vmx-vnmi-pending": false,
+ "kvm-no-smi-migration": false,
+ "monitor": false,
+ "vmx-vintr-pending": false,
+ "avx512er": false,
+ "pmm-en": false,
+ "taa-no": false,
+ "pcid": false,
+ "vmx-secondary-ctls": false,
+ "arch-capabilities": true,
+ "vmx-xsaves": false,
+ "clzero": true,
+ "3dnow": false,
+ "erms": false,
+ "x-force-features": false,
+ "vmx-entry-ia32e-mode": false,
+ "lahf-lm": true,
+ "lahf_lm": true,
+ "vmx-ins-outs": false,
+ "vpclmulqdq": false,
+ "xstore": false,
+ "fxsr-opt": true,
+ "fxsr_opt": true,
+ "hv-synic": false,
+ "rtm": false,
+ "kvm-hint-dedicated": false,
+ "lmce": false,
+ "hv-time": false,
+ "perfctr_nb": false,
+ "perfctr-nb": false,
+ "hv-tlbflush": false,
+ "ffxsr": true,
+ "rdrand": true,
+ "rdseed": true,
+ "avx512-4vnniw": false,
+ "vme": true,
+ "vmx": false,
+ "dtes64": false,
+ "mtrr": true,
+ "rdtscp": true,
+ "xsaveerptr": true,
+ "pse36": true,
+ "kvm-pv-tlb-flush": true,
+ "vmx-activity-wait-sipi": false,
+ "tbm": false,
+ "vmx-rdpmc-exit": false,
+ "wdt": false,
+ "vmx-entry-load-efer": false,
+ "level-func7": 0,
+ "vmx-mtf": false,
+ "pause_filter": false,
+ "model-id": "AMD Ryzen 9 3900X 12-Core Processor ",
+ "sha-ni": true,
+ "abm": true,
+ "vmx-ept-advanced-exitinfo": false,
+ "avx512pf": false,
+ "vmx-hlt-exit": false,
+ "xstore-en": false
+ }
+ }
+ },
+ "id": "model-expansion"
+}
+
+{
+ "return": [
+ {
+ "name": "max",
+ "typename": "max-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": false
+ },
+ {
+ "name": "host",
+ "typename": "host-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": false
+ },
+ {
+ "name": "base",
+ "typename": "base-x86_64-cpu",
+ "unavailable-features": [],
+ "static": true,
+ "migration-safe": true
+ },
+ {
+ "name": "qemu64-v1",
+ "typename": "qemu64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "qemu64",
+ "typename": "qemu64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu64-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "qemu32-v1",
+ "typename": "qemu32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "qemu32",
+ "typename": "qemu32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "qemu32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "phenom-v1",
+ "typename": "phenom-v1-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "phenom",
+ "typename": "phenom-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "alias-of": "phenom-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium3-v1",
+ "typename": "pentium3-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium3",
+ "typename": "pentium3-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium2-v1",
+ "typename": "pentium2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium2",
+ "typename": "pentium2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium-v1",
+ "typename": "pentium-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "pentium",
+ "typename": "pentium-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "pentium-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "n270-v1",
+ "typename": "n270-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "n270",
+ "typename": "n270-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "n270-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm64-v1",
+ "typename": "kvm64-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm64",
+ "typename": "kvm64-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm64-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm32-v1",
+ "typename": "kvm32-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "kvm32",
+ "typename": "kvm32-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "kvm32-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "coreduo-v1",
+ "typename": "coreduo-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "coreduo",
+ "typename": "coreduo-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "coreduo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "core2duo-v1",
+ "typename": "core2duo-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "core2duo",
+ "typename": "core2duo-x86_64-cpu",
+ "unavailable-features": [
+ "ss"
+ ],
+ "alias-of": "core2duo-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "athlon-v1",
+ "typename": "athlon-v1-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "athlon",
+ "typename": "athlon-x86_64-cpu",
+ "unavailable-features": [
+ "3dnowext",
+ "3dnow"
+ ],
+ "alias-of": "athlon-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v2",
+ "typename": "Westmere-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-v1",
+ "typename": "Westmere-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere-IBRS",
+ "typename": "Westmere-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Westmere-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Westmere",
+ "typename": "Westmere-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Westmere-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge-v2",
+ "typename": "Snowridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge-v1",
+ "typename": "Snowridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "mpx",
+ "mpx",
+ "split-lock-detect"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Snowridge",
+ "typename": "Snowridge-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "gfni",
+ "cldemote",
+ "movdiri",
+ "movdir64b",
+ "spec-ctrl",
+ "core-capability",
+ "mpx",
+ "mpx",
+ "split-lock-detect"
+ ],
+ "alias-of": "Snowridge-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v3",
+ "typename": "Skylake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v2",
+ "typename": "Skylake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-v1",
+ "typename": "Skylake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-noTSX-IBRS",
+ "typename": "Skylake-Server-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v3",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server-IBRS",
+ "typename": "Skylake-Server-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Server",
+ "typename": "Skylake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Skylake-Server-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v3",
+ "typename": "Skylake-Client-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v2",
+ "typename": "Skylake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-v1",
+ "typename": "Skylake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-noTSX-IBRS",
+ "typename": "Skylake-Client-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Skylake-Client-v3",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client-IBRS",
+ "typename": "Skylake-Client-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Skylake-Client-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Skylake-Client",
+ "typename": "Skylake-Client-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Skylake-Client-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v2",
+ "typename": "SandyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-v1",
+ "typename": "SandyBridge-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge-IBRS",
+ "typename": "SandyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "SandyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "SandyBridge",
+ "typename": "SandyBridge-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "SandyBridge-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Penryn-v1",
+ "typename": "Penryn-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Penryn",
+ "typename": "Penryn-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Penryn-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G5-v1",
+ "typename": "Opteron_G5-v1-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4",
+ "tbm"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G5",
+ "typename": "Opteron_G5-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4",
+ "tbm"
+ ],
+ "alias-of": "Opteron_G5-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G4-v1",
+ "typename": "Opteron_G4-v1-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G4",
+ "typename": "Opteron_G4-x86_64-cpu",
+ "unavailable-features": [
+ "xop",
+ "fma4"
+ ],
+ "alias-of": "Opteron_G4-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G3-v1",
+ "typename": "Opteron_G3-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G3",
+ "typename": "Opteron_G3-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G3-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G2-v1",
+ "typename": "Opteron_G2-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G2",
+ "typename": "Opteron_G2-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G2-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G1-v1",
+ "typename": "Opteron_G1-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Opteron_G1",
+ "typename": "Opteron_G1-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Opteron_G1-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v2",
+ "typename": "Nehalem-v2-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-v1",
+ "typename": "Nehalem-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem-IBRS",
+ "typename": "Nehalem-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "spec-ctrl"
+ ],
+ "alias-of": "Nehalem-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Nehalem",
+ "typename": "Nehalem-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Nehalem-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "KnightsMill-v1",
+ "typename": "KnightsMill-v1-x86_64-cpu",
+ "unavailable-features": [
+ "ss",
+ "erms",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "avx512f",
+ "avx512f",
+ "avx512f"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "KnightsMill",
+ "typename": "KnightsMill-x86_64-cpu",
+ "unavailable-features": [
+ "ss",
+ "erms",
+ "avx512f",
+ "avx512pf",
+ "avx512er",
+ "avx512cd",
+ "avx512-vpopcntdq",
+ "avx512-4vnniw",
+ "avx512-4fmaps",
+ "avx512f",
+ "avx512f",
+ "avx512f"
+ ],
+ "alias-of": "KnightsMill-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v2",
+ "typename": "IvyBridge-v2-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-v1",
+ "typename": "IvyBridge-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge-IBRS",
+ "typename": "IvyBridge-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "spec-ctrl"
+ ],
+ "alias-of": "IvyBridge-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "IvyBridge",
+ "typename": "IvyBridge-x86_64-cpu",
+ "unavailable-features": [
+ "erms"
+ ],
+ "alias-of": "IvyBridge-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server-v2",
+ "typename": "Icelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server-v1",
+ "typename": "Icelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server-noTSX",
+ "typename": "Icelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Icelake-Server-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Server",
+ "typename": "Icelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "la57",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Icelake-Server-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client-v2",
+ "typename": "Icelake-Client-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client-v1",
+ "typename": "Icelake-Client-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client-noTSX",
+ "typename": "Icelake-Client-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "pku"
+ ],
+ "alias-of": "Icelake-Client-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Icelake-Client",
+ "typename": "Icelake-Client-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512vbmi",
+ "pku",
+ "avx512vbmi2",
+ "gfni",
+ "vaes",
+ "vpclmulqdq",
+ "avx512vnni",
+ "avx512bitalg",
+ "avx512-vpopcntdq",
+ "spec-ctrl",
+ "pku"
+ ],
+ "alias-of": "Icelake-Client-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v4",
+ "typename": "Haswell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v3",
+ "typename": "Haswell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v2",
+ "typename": "Haswell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-v1",
+ "typename": "Haswell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-noTSX-IBRS",
+ "typename": "Haswell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-noTSX",
+ "typename": "Haswell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "alias-of": "Haswell-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell-IBRS",
+ "typename": "Haswell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Haswell-v3",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Haswell",
+ "typename": "Haswell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Haswell-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v2",
+ "typename": "EPYC-v2-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-v1",
+ "typename": "EPYC-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC-IBPB",
+ "typename": "EPYC-IBPB-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "EPYC-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "EPYC",
+ "typename": "EPYC-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "EPYC-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Dhyana-v1",
+ "typename": "Dhyana-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Dhyana",
+ "typename": "Dhyana-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Dhyana-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Denverton-v1",
+ "typename": "Denverton-v1-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "spec-ctrl",
+ "mpx",
+ "mpx"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Denverton",
+ "typename": "Denverton-x86_64-cpu",
+ "unavailable-features": [
+ "erms",
+ "mpx",
+ "spec-ctrl",
+ "mpx",
+ "mpx"
+ ],
+ "alias-of": "Denverton-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Conroe-v1",
+ "typename": "Conroe-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Conroe",
+ "typename": "Conroe-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "Conroe-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v3",
+ "typename": "Cascadelake-Server-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v2",
+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-v1",
+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server-noTSX",
+ "typename": "Cascadelake-Server-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku",
+ "ibrs-all"
+ ],
+ "alias-of": "Cascadelake-Server-v3",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Cascadelake-Server",
+ "typename": "Cascadelake-Server-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "avx512f",
+ "avx512dq",
+ "avx512cd",
+ "avx512bw",
+ "avx512vl",
+ "pku",
+ "avx512vnni",
+ "spec-ctrl",
+ "avx512f",
+ "avx512f",
+ "avx512f",
+ "pku"
+ ],
+ "alias-of": "Cascadelake-Server-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v4",
+ "typename": "Broadwell-v4-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v3",
+ "typename": "Broadwell-v3-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v2",
+ "typename": "Broadwell-v2-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-v1",
+ "typename": "Broadwell-v1-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-noTSX-IBRS",
+ "typename": "Broadwell-noTSX-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v4",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-noTSX",
+ "typename": "Broadwell-noTSX-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "erms",
+ "invpcid"
+ ],
+ "alias-of": "Broadwell-v2",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell-IBRS",
+ "typename": "Broadwell-IBRS-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm",
+ "spec-ctrl"
+ ],
+ "alias-of": "Broadwell-v3",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "Broadwell",
+ "typename": "Broadwell-x86_64-cpu",
+ "unavailable-features": [
+ "pcid",
+ "hle",
+ "erms",
+ "invpcid",
+ "rtm"
+ ],
+ "alias-of": "Broadwell-v1",
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "486-v1",
+ "typename": "486-v1-x86_64-cpu",
+ "unavailable-features": [],
+ "static": false,
+ "migration-safe": true
+ },
+ {
+ "name": "486",
+ "typename": "486-x86_64-cpu",
+ "unavailable-features": [],
+ "alias-of": "486-v1",
+ "static": false,
+ "migration-safe": true
+ }
+ ],
+ "id": "definitions"
+}
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.sig b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.sig
new file mode 100644
index 0000000000..522d6a5be2
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.sig
@@ -0,0 +1,4 @@
+870f10
+family: 23 (0x17)
+model: 113 (0x71)
+stepping: 0 (0x00)
diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.xml
new file mode 100644
index 0000000000..c8db5e3e10
--- /dev/null
+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core.xml
@@ -0,0 +1,66 @@
+<!-- AMD Ryzen 9 3900X 12-Core Processor -->
+<cpudata arch='x86'>
+ <cpuid eax_in='0x00000000' ecx_in='0x00' eax='0x00000010' ebx='0x68747541' ecx='0x444d4163' edx='0x69746e65'/>
+ <cpuid eax_in='0x00000001' ecx_in='0x00' eax='0x00870f10' ebx='0x10180800' ecx='0x7ed8320b' edx='0x178bfbff'/>
+ <cpuid eax_in='0x00000002' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x00000003' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x00000005' ecx_in='0x00' eax='0x00000040' ebx='0x00000040' ecx='0x00000003' edx='0x00000011'/>
+ <cpuid eax_in='0x00000006' ecx_in='0x00' eax='0x00000004' ebx='0x00000000' ecx='0x00000001' edx='0x00000000'/>
+ <cpuid eax_in='0x00000007' ecx_in='0x00' eax='0x00000000' ebx='0x219c91a9' ecx='0x00400004' edx='0x00000000'/>
+ <cpuid eax_in='0x00000008' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x00000009' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000a' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000b' ecx_in='0x00' eax='0x00000001' ebx='0x00000002' ecx='0x00000100' edx='0x00000010'/>
+ <cpuid eax_in='0x0000000b' ecx_in='0x01' eax='0x00000007' ebx='0x00000018' ecx='0x00000201' edx='0x00000010'/>
+ <cpuid eax_in='0x0000000c' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000d' ecx_in='0x00' eax='0x00000207' ebx='0x00000340' ecx='0x00000380' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000d' ecx_in='0x01' eax='0x0000000f' ebx='0x00000340' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000d' ecx_in='0x02' eax='0x00000100' ebx='0x00000240' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000d' ecx_in='0x09' eax='0x00000040' ebx='0x00000340' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000e' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x0000000f' ecx_in='0x00' eax='0x00000000' ebx='0x000000ff' ecx='0x00000000' edx='0x00000002'/>
+ <cpuid eax_in='0x0000000f' ecx_in='0x01' eax='0x00000000' ebx='0x00000040' ecx='0x000000ff' edx='0x00000007'/>
+ <cpuid eax_in='0x00000010' ecx_in='0x00' eax='0x00000000' ebx='0x00000002' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x00000010' ecx_in='0x01' eax='0x0000000f' ebx='0x00000000' ecx='0x00000004' edx='0x0000000f'/>
+ <cpuid eax_in='0x20000000' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000000' ecx_in='0x00' eax='0x80000020' ebx='0x68747541' ecx='0x444d4163' edx='0x69746e65'/>
+ <cpuid eax_in='0x80000001' ecx_in='0x00' eax='0x00870f10' ebx='0x20000000' ecx='0x75c237ff' edx='0x2fd3fbff'/>
+ <cpuid eax_in='0x80000002' ecx_in='0x00' eax='0x20444d41' ebx='0x657a7952' ecx='0x2039206e' edx='0x30303933'/>
+ <cpuid eax_in='0x80000003' ecx_in='0x00' eax='0x32312058' ebx='0x726f432d' ecx='0x72502065' edx='0x7365636f'/>
+ <cpuid eax_in='0x80000004' ecx_in='0x00' eax='0x20726f73' ebx='0x20202020' ecx='0x20202020' edx='0x00202020'/>
+ <cpuid eax_in='0x80000005' ecx_in='0x00' eax='0xff40ff40' ebx='0xff40ff40' ecx='0x20080140' edx='0x20080140'/>
+ <cpuid eax_in='0x80000006' ecx_in='0x00' eax='0x48006400' ebx='0x68006400' ecx='0x02006140' edx='0x02009140'/>
+ <cpuid eax_in='0x80000007' ecx_in='0x00' eax='0x00000000' ebx='0x0000001b' ecx='0x00000000' edx='0x00006799'/>
+ <cpuid eax_in='0x80000008' ecx_in='0x00' eax='0x00003030' ebx='0x010cb657' ecx='0x00007017' edx='0x00010000'/>
+ <cpuid eax_in='0x80000009' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000000a' ecx_in='0x00' eax='0x00000001' ebx='0x00008000' ecx='0x00000000' edx='0x0013bcff'/>
+ <cpuid eax_in='0x8000000b' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000000c' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000000d' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000000e' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000000f' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000010' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000011' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000012' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000013' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000014' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000015' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000016' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000017' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000018' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000019' ecx_in='0x00' eax='0xf040f040' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001a' ecx_in='0x00' eax='0x00000006' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001b' ecx_in='0x00' eax='0x000003ff' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001c' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001d' ecx_in='0x00' eax='0x00004121' ebx='0x01c0003f' ecx='0x0000003f' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001d' ecx_in='0x01' eax='0x00004122' ebx='0x01c0003f' ecx='0x0000003f' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001d' ecx_in='0x02' eax='0x00004143' ebx='0x01c0003f' ecx='0x000003ff' edx='0x00000002'/>
+ <cpuid eax_in='0x8000001d' ecx_in='0x03' eax='0x00014163' ebx='0x03c0003f' ecx='0x00003fff' edx='0x00000001'/>
+ <cpuid eax_in='0x8000001e' ecx_in='0x00' eax='0x00000010' ebx='0x00000108' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x8000001f' ecx_in='0x00' eax='0x0001000f' ebx='0x0000016f' ecx='0x000001fd' edx='0x00000001'/>
+ <cpuid eax_in='0x80000020' ecx_in='0x00' eax='0x00000000' ebx='0x00000002' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0x80000020' ecx_in='0x01' eax='0x0000000b' ebx='0x00000000' ecx='0x00000000' edx='0x0000000f'/>
+ <cpuid eax_in='0x80860000' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <cpuid eax_in='0xc0000000' ecx_in='0x00' eax='0x00000000' ebx='0x00000000' ecx='0x00000000' edx='0x00000000'/>
+ <msr index='0x10a' edx='0x00000000' eax='0x00000069'/>
+</cpudata>
--
2.26.2
4 years, 6 months
[libvirt PATCH] tests: poison $HOME and $XDG_RUNTIME_DIR env variables
by Daniel P. Berrangé
To attempt to catch unit tests which accidentally create files in $HOME,
or $XDG_RUNTIME_DIR, poison these env vars by pointing them to
directories which don't exist. This should give easier to debug test
failures. For example:
$ VIR_TEST_DEBUG=1 ./qemuhotplugtest
Could not initialize HostdevManager - operation failed: Failed to create state dir '/bad-test-used-env-xdg-runtime-dir/libvirt/hostdevmgr'
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tests/testutils.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/testutils.c b/tests/testutils.c
index 5fd81b70a2..8533a02d73 100644
--- a/tests/testutils.c
+++ b/tests/testutils.c
@@ -767,6 +767,9 @@ int virTestMain(int argc,
preloads[npreloads] = NULL;
}
+ setenv("HOME", "/bad-test-used-env-home", 1);
+ setenv("XDG_RUNTIME_DIR", "/bad-test-used-env-xdg-runtime-dir", 1);
+
va_start(ap, func);
while ((lib = va_arg(ap, const char *))) {
if (!virFileIsExecutable(lib)) {
--
2.26.2
4 years, 6 months
[libvirt PATCH] docs: documented protected branches and tags
by Daniel P. Berrangé
We need to prevent accidental deletion of release tags and maint
branches.
We need to ensure that shared CI runners are enabled on all repos.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
docs/newreposetup.rst | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/docs/newreposetup.rst b/docs/newreposetup.rst
index ce54aa09d3..cac4f84813 100644
--- a/docs/newreposetup.rst
+++ b/docs/newreposetup.rst
@@ -71,6 +71,26 @@ required under the **Settings** page:
* *Require approval from code owners*: disabled
+ * *Branch*: ``v*-maint``
+
+ * *Allowed to merge*: Developers + Maintainers
+
+ * *Allowed to push*: None (or Developers + Maintainers if MRs not used)
+
+ * *Require approval from code owners*: disabled
+
+ * **Protected tags**
+
+ * *Tag*: ``v*``
+
+ * *Allowed to create*: Developers + Maintainers
+
+* **CI/CD**
+
+ * **Runners**
+
+ * *Shared runners*: Enable shared runners
+
GitHub configuration
====================
--
2.26.2
4 years, 6 months
[libvirt PATCH] tests: Mock virGetUserRuntimeDirectory() for qemuhotplug
by Andrea Bolognani
Not mocking this function results in files being created in the
user's home directory when running the test and in the build
failing altogether inside a constrained environment such as the
one used by pbuilder:
Could not initialize HostdevManager - operation failed: Failed
to create state dir '/nonexistent/.cache/libvirt/hostdevmgr'
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
tests/qemuhotplugmock.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tests/qemuhotplugmock.c b/tests/qemuhotplugmock.c
index d2324913cf..27c81670a3 100644
--- a/tests/qemuhotplugmock.c
+++ b/tests/qemuhotplugmock.c
@@ -27,6 +27,7 @@
static int (*real_virGetDeviceID)(const char *path, int *maj, int *min);
static bool (*real_virFileExists)(const char *path);
+static char *(*real_virGetUserRuntimeDirectory)(void);
static void
init_syms(void)
@@ -36,6 +37,7 @@ init_syms(void)
VIR_MOCK_REAL_INIT(virGetDeviceID);
VIR_MOCK_REAL_INIT(virFileExists);
+ VIR_MOCK_REAL_INIT(virGetUserRuntimeDirectory);
}
unsigned long long
@@ -106,3 +108,10 @@ void
qemuProcessKillManagedPRDaemon(virDomainObjPtr vm G_GNUC_UNUSED)
{
}
+
+char *
+virGetUserRuntimeDirectory(void)
+{
+ return g_build_filename(g_getenv("LIBVIRT_FAKE_ROOT_DIR"),
+ "user-runtime-directory", NULL);
+}
--
2.25.4
4 years, 6 months
[PATCH] qemuProcessStop: Reattach NVMe disks a domain is mirroring into
by Michal Privoznik
In v5.10.0-rc1~42 (which was later fixed in v6.0.0-rc1~487) I am
removing XATTRs for a file that QEMU is mirroring a disk into but
it is killed meanwhile. Well, if we call
qemuDomainStorageSourceAccessRevoke() instead of
qemuBlockRemoveImageMetadata() then not only the file will have
perms fixed (instead of left accessible to qemu) but if the
mirror destination is not a file but a NVMe disk, then the disk
will be reattached back to the host.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1825785
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_process.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 8ea470f75f..70c71e069c 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7605,7 +7605,7 @@ void qemuProcessStop(virQEMUDriverPtr driver,
virDomainDiskDefPtr disk = def->disks[i];
if (disk->mirror)
- qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->mirror);
+ qemuDomainStorageSourceAccessRevoke(driver, vm, disk->mirror);
qemuBlockRemoveImageMetadata(driver, vm, disk->dst, disk->src);
}
--
2.26.2
4 years, 6 months
[libvirt PATCH 0/3] tests: Update capabilities for QEMU 5.0.0
by Andrea Bolognani
Now that QEMU 5.0.0 has been released, bring capabilities files for
non-x86 architectures up to date.
As usual, this series as posted to the mailing list is heavily
trimmed: for the unabridged version, fetch
https://gitlab.com/abologna/libvirt caps-5.0.0
Andrea Bolognani (3):
tests: Update capabilities for QEMU 5.0.0 on aarch64
tests: Update capabilities for QEMU 5.0.0 on ppc64
tests: Add capabilities for QEMU 5.0.0 on riscv64
.../qemu_5.0.0-virt.aarch64.xml | 60 +-
tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 60 +-
.../caps_5.0.0.aarch64.replies | 8937 ++---
.../caps_5.0.0.aarch64.xml | 384 +-
.../caps_5.0.0.ppc64.replies | 2163 +-
.../qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 15 +-
...h64.replies => caps_5.0.0.riscv64.replies} | 27491 +++++++---------
.../caps_5.0.0.riscv64.xml | 201 +
...default-video-type-ppc64.ppc64-latest.args | 2 +
...ory-hotplug-nvdimm-ppc64.ppc64-latest.args | 2 +
...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 4 +-
...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 4 +-
...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 4 +-
...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 2 +
...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 2 +
...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 2 +
.../ppc64-pseries-graphics.ppc64-latest.args | 2 +
.../ppc64-pseries-headless.ppc64-latest.args | 2 +
.../riscv64-virt-graphics.riscv64-latest.args | 8 +-
.../riscv64-virt-headless.riscv64-latest.args | 8 +-
.../tpm-emulator-spapr.ppc64-latest.args | 2 +
...fault-cpu-kvm-pseries-2.7.ppc64-latest.xml | 2 +-
...fault-cpu-kvm-pseries-3.1.ppc64-latest.xml | 2 +-
...fault-cpu-kvm-pseries-4.2.ppc64-latest.xml | 2 +-
24 files changed, 19067 insertions(+), 20294 deletions(-)
copy tests/qemucapabilitiesdata/{caps_5.0.0.aarch64.replies => caps_5.0.0.riscv64.replies} (78%)
create mode 100644 tests/qemucapabilitiesdata/caps_5.0.0.riscv64.xml
--
2.25.4
4 years, 6 months
[libvirt-dbus PATCH] meson: Exclude some files from releases
by Andrea Bolognani
Both .mailmap and .travis.yml only make sense in the context of a
git checkout, so we should not include them in releases.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
meson.build | 9 +++++++++
tools/nodist.sh | 5 +++++
2 files changed, 14 insertions(+)
create mode 100755 tools/nodist.sh
diff --git a/meson.build b/meson.build
index e765ed6..341abe9 100644
--- a/meson.build
+++ b/meson.build
@@ -263,6 +263,15 @@ if git
foreach file : [ 'libvirt-dbus.spec', 'AUTHORS.rst' ]
meson.add_dist_script('tools/dist.sh', meson.build_root(), file)
endforeach
+
+ nodist_files = [
+ '.mailmap',
+ '.travis.yml',
+ ]
+
+ foreach file : nodist_files
+ meson.add_dist_script('tools/nodist.sh', file)
+ endforeach
endif
diff --git a/tools/nodist.sh b/tools/nodist.sh
new file mode 100755
index 0000000..f820147
--- /dev/null
+++ b/tools/nodist.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+FILE=$1
+
+rm -f $MESON_DIST_ROOT/$FILE
--
2.25.4
4 years, 6 months
[libvirt PATCH] tests: Enable directory override for qemucapsprobe
by Andrea Bolognani
Currently, qemucapsprobe fails when libvirt is not already installed
on the system:
$ ./tests/qemucapsprobe /path/to/qemu-system-ppc64 >/dev/null
I/O warning : failed to load external entity "/usr/share/libvirt/cpu_map/index.xml"
2020-05-06 09:49:59.136+0000: 269822: info : libvirt version: 6.4.0
2020-05-06 09:49:59.136+0000: 269822: info : hostname: [...]
2020-05-06 09:49:59.136+0000: 269822: warning : virQEMUCapsLogProbeFailure:5127 :
Failed to probe capabilities for /path/to/qemu-system-ppc64: XML error: failed to
parse xml document '/usr/share/libvirt/cpu_map/index.xml'
It would be great if the tool could work entirely out of the build
directory, and this patch achieves just that.
Suggested-by: Peter Krempa <pkrempa(a)redhat.com>
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
tests/qemucapsprobe.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/qemucapsprobe.c b/tests/qemucapsprobe.c
index c7e8f3309d..ea88fd2e8a 100644
--- a/tests/qemucapsprobe.c
+++ b/tests/qemucapsprobe.c
@@ -55,6 +55,8 @@ main(int argc, char **argv)
VIR_TEST_PRELOAD(mock);
+ virFileActivateDirOverrideForProg(argv[0]);
+
if (argc != 2) {
fprintf(stderr, "%s QEMU_binary\n", argv[0]);
return EXIT_FAILURE;
--
2.25.4
4 years, 6 months
[libvirt PATCH] qemu: Don't use CPU from host capabilities as host-model on ARM
by Jiri Denemark
We never supported host-model CPUs on ARM and we don't want to support
them even once patches for direct detection of host CPU are merged. And
since using host CPU definition for host-model CPUs exist only for
backward compatibility, we should not use it for any host-model support
added in the future. Such enhancement should exclusively use the result
of query-cpu-model-expansion. Until proper host-model support is
implemented for ARM (if ever), we need to make sure the detected host
CPU is not accidentally used for host-model CPUs.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_capabilities.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 47f88481c8..7b32511c3d 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -3569,6 +3569,8 @@ virQEMUCapsInitCPUModel(virQEMUCapsPtr qemuCaps,
} else if (ARCH_IS_X86(qemuCaps->arch)) {
ret = virQEMUCapsInitCPUModelX86(qemuCaps, type, modelInfo,
cpu, migratable);
+ } else if (ARCH_IS_ARM(qemuCaps->arch)) {
+ ret = 2;
}
if (ret == 0)
--
2.26.2
4 years, 6 months