[libvirt PATCH 0/2] Add cpu model for EPYC Genoa

Plus one drive-by improvement to sync_qemu_features_i386.py. Tim Wiederhake (2): cpu_map: Ignore all vmx-* features in sync_qemu_features_i386.py cpu_map: Add cpu model EPYC Genoa src/cpu_map/index.xml | 1 + src/cpu_map/meson.build | 1 + src/cpu_map/sync_qemu_features_i386.py | 90 +------------- src/cpu_map/x86_EPYC-Genoa.xml | 115 ++++++++++++++++++ .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 + 7 files changed, 121 insertions(+), 89 deletions(-) create mode 100644 src/cpu_map/x86_EPYC-Genoa.xml -- 2.39.2

The script that synchronizes cpu models from qemu, sync_qemu_models_i386.py, ignores all features that begin with "vmx-". Do the same for synchronizing cpu features so we do not have to track irrelevant features individually. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/cpu_map/sync_qemu_features_i386.py | 90 +------------------------- 1 file changed, 1 insertion(+), 89 deletions(-) diff --git a/src/cpu_map/sync_qemu_features_i386.py b/src/cpu_map/sync_qemu_features_i386.py index b3a01b9509..9e77d44bae 100755 --- a/src/cpu_map/sync_qemu_features_i386.py +++ b/src/cpu_map/sync_qemu_features_i386.py @@ -91,94 +91,6 @@ def ignore_feature(feature): "start-powered-off", "tcg-cpuid", "vmware-cpuid-freq", - "vmx-activity-hlt", - "vmx-activity-shutdown", - "vmx-activity-wait-sipi", - "vmx-apicv-register", - "vmx-apicv-vid", - "vmx-apicv-x2apic", - "vmx-apicv-xapic", - "vmx-cr3-load-noexit", - "vmx-cr3-store-noexit", - "vmx-cr8-load-exit", - "vmx-cr8-store-exit", - "vmx-desc-exit", - "vmx-encls-exit", - "vmx-entry-ia32e-mode", - "vmx-entry-load-bndcfgs", - "vmx-entry-load-efer", - "vmx-entry-load-pat", - "vmx-entry-load-perf-global-ctrl", - "vmx-entry-load-pkrs", - "vmx-entry-load-rtit-ctl", - "vmx-entry-noload-debugctl", - "vmx-ept", - "vmx-ept-1gb", - "vmx-ept-2mb", - "vmx-ept-advanced-exitinfo", - "vmx-ept-execonly", - "vmx-eptad", - "vmx-eptp-switching", - "vmx-exit-ack-intr", - "vmx-exit-clear-bndcfgs", - "vmx-exit-clear-rtit-ctl", - "vmx-exit-load-efer", - "vmx-exit-load-pat", - "vmx-exit-load-perf-global-ctrl", - "vmx-exit-load-pkrs", - "vmx-exit-nosave-debugctl", - "vmx-exit-save-efer", - "vmx-exit-save-pat", - "vmx-exit-save-preemption-timer", - "vmx-flexpriority", - "vmx-hlt-exit", - "vmx-ins-outs", - "vmx-intr-exit", - "vmx-invept", - "vmx-invept-all-context", - "vmx-invept-single-context", - "vmx-invept-single-context-noglobals", - "vmx-invlpg-exit", - "vmx-invpcid-exit", - "vmx-invvpid", - "vmx-invvpid-all-context", - "vmx-invvpid-single-addr", - "vmx-io-bitmap", - "vmx-io-exit", - "vmx-monitor-exit", - "vmx-movdr-exit", - "vmx-msr-bitmap", - "vmx-mtf", - "vmx-mwait-exit", - "vmx-nmi-exit", - "vmx-page-walk-4", - "vmx-page-walk-5", - "vmx-pause-exit", - "vmx-ple", - "vmx-pml", - "vmx-posted-intr", - "vmx-preemption-timer", - "vmx-rdpmc-exit", - "vmx-rdrand-exit", - "vmx-rdseed-exit", - "vmx-rdtsc-exit", - "vmx-rdtscp-exit", - "vmx-secondary-ctls", - "vmx-shadow-vmcs", - "vmx-store-lma", - "vmx-true-ctls", - "vmx-tsc-offset", - "vmx-tsc-scaling", - "vmx-unrestricted-guest", - "vmx-vintr-pending", - "vmx-vmfunc", - "vmx-vmwrite-vmexit-fields", - "vmx-vnmi", - "vmx-vnmi-pending", - "vmx-vpid", - "vmx-wbinvd-exit", - "vmx-xsaves", - "vmx-zero-len-inject", "xen-vapic", ] @@ -187,7 +99,7 @@ def ignore_feature(feature): name = feature["name"] - if name.startswith("x-"): + if name.startswith("x-") or name.startswith("vmx-"): return True if name in ignored_features: -- 2.39.2

This was added in qemu commit 166b174188. No additional features had to be added to libvirt. Signed-off-by: Tim Wiederhake <twiederh@redhat.com> --- src/cpu_map/index.xml | 1 + src/cpu_map/meson.build | 1 + src/cpu_map/x86_EPYC-Genoa.xml | 115 ++++++++++++++++++ .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 + 6 files changed, 120 insertions(+) create mode 100644 src/cpu_map/x86_EPYC-Genoa.xml diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml index 0187016c1c..d2c5af5797 100644 --- a/src/cpu_map/index.xml +++ b/src/cpu_map/index.xml @@ -70,6 +70,7 @@ <include filename='x86_EPYC-IBPB.xml'/> <include filename='x86_EPYC-Rome.xml'/> <include filename='x86_EPYC-Milan.xml'/> + <include filename='x86_EPYC-Genoa.xml'/> <!-- Hygon CPU models --> <include filename='x86_Dhyana.xml'/> diff --git a/src/cpu_map/meson.build b/src/cpu_map/meson.build index fa83b23474..ae5293e85f 100644 --- a/src/cpu_map/meson.build +++ b/src/cpu_map/meson.build @@ -39,6 +39,7 @@ cpumap_data = [ 'x86_Dhyana.xml', 'x86_EPYC-IBPB.xml', 'x86_EPYC.xml', + 'x86_EPYC-Genoa.xml', 'x86_EPYC-Milan.xml', 'x86_EPYC-Rome.xml', 'x86_features.xml', diff --git a/src/cpu_map/x86_EPYC-Genoa.xml b/src/cpu_map/x86_EPYC-Genoa.xml new file mode 100644 index 0000000000..3e765b89b1 --- /dev/null +++ b/src/cpu_map/x86_EPYC-Genoa.xml @@ -0,0 +1,115 @@ +<cpus> + <model name='EPYC-Genoa'> + <decode host='on' guest='on'/> + <signature family='25' model='17'/> + <vendor name='AMD'/> + <feature name='3dnowprefetch'/> + <feature name='abm'/> + <feature name='adx'/> + <feature name='aes'/> + <feature name='amd-psfd'/> + <feature name='amd-ssbd'/> + <feature name='amd-stibp'/> + <feature name='apic'/> + <feature name='arat'/> + <feature name='auto-ibrs'/> + <feature name='avx'/> + <feature name='avx2'/> + <feature name='avx512-bf16'/> + <feature name='avx512-vpopcntdq'/> + <feature name='avx512bitalg'/> + <feature name='avx512bw'/> + <feature name='avx512cd'/> + <feature name='avx512dq'/> + <feature name='avx512f'/> + <feature name='avx512ifma'/> + <feature name='avx512vbmi'/> + <feature name='avx512vbmi2'/> + <feature name='avx512vl'/> + <feature name='avx512vnni'/> + <feature name='bmi1'/> + <feature name='bmi2'/> + <feature name='clflush'/> + <feature name='clflushopt'/> + <feature name='clwb'/> + <feature name='clzero'/> + <feature name='cmov'/> + <feature name='cr8legacy'/> + <feature name='cx16'/> + <feature name='cx8'/> + <feature name='de'/> + <feature name='erms'/> + <feature name='f16c'/> + <feature name='fma'/> + <feature name='fpu'/> + <feature name='fsgsbase'/> + <feature name='fsrm'/> + <feature name='fxsr'/> + <feature name='fxsr_opt'/> + <feature name='gfni'/> + <feature name='ibpb'/> + <feature name='ibrs'/> + <feature name='invpcid'/> + <feature name='la57'/> + <feature name='lahf_lm'/> + <feature name='lfence-always-serializing'/> + <feature name='lm'/> + <feature name='mca'/> + <feature name='mce'/> + <feature name='misalignsse'/> + <feature name='mmx'/> + <feature name='mmxext'/> + <feature name='movbe'/> + <feature name='msr'/> + <feature name='mtrr'/> + <feature name='no-nested-data-bp'/> + <feature name='npt'/> + <feature name='nrip-save'/> + <feature name='null-sel-clr-base'/> + <feature name='nx'/> + <feature name='osvw'/> + <feature name='pae'/> + <feature name='pat'/> + <feature name='pcid'/> + <feature name='pclmuldq'/> + <feature name='pdpe1gb'/> + <feature name='perfctr_core'/> + <feature name='pge'/> + <feature name='pku'/> + <feature name='pni'/> + <feature name='popcnt'/> + <feature name='pse'/> + <feature name='pse36'/> + <feature name='rdpid'/> + <feature name='rdrand'/> + <feature name='rdseed'/> + <feature name='rdtscp'/> + <feature name='sep'/> + <feature name='sha-ni'/> + <feature name='smap'/> + <feature name='smep'/> + <feature name='sse'/> + <feature name='sse2'/> + <feature name='sse4.1'/> + <feature name='sse4.2'/> + <feature name='sse4a'/> + <feature name='ssse3'/> + <feature name='stibp-always-on'/> + <feature name='svm'/> + <feature name='svme-addr-chk'/> + <feature name='syscall'/> + <feature name='tsc'/> + <feature name='umip'/> + <feature name='vaes'/> + <feature name='vme'/> + <feature name='vnmi'/> + <feature name='vpclmulqdq'/> + <feature name='wbnoinvd'/> + <feature name='xgetbv1'/> + <feature name='xsave'/> + <feature name='xsavec'/> + <feature name='xsaveerptr'/> + <feature name='xsaveopt'/> + <feature name='xsaves'/> + </model> +</cpus> diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml index 9a9e84e613..4d438efdf7 100644 --- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml @@ -115,6 +115,7 @@ <model usable='no' vendor='AMD'>EPYC-Rome</model> <model usable='no' vendor='AMD'>EPYC-Milan</model> <model usable='yes' vendor='AMD'>EPYC-IBPB</model> + <model usable='no' vendor='AMD'>EPYC-Genoa</model> <model usable='yes' vendor='AMD'>EPYC</model> <model usable='yes' vendor='Hygon'>Dhyana</model> <model usable='no' vendor='Intel'>Cooperlake</model> diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml index f898149a3c..e32cd80c17 100644 --- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml @@ -115,6 +115,7 @@ <model usable='no' vendor='AMD'>EPYC-Rome</model> <model usable='no' vendor='AMD'>EPYC-Milan</model> <model usable='no' vendor='AMD'>EPYC-IBPB</model> + <model usable='no' vendor='AMD'>EPYC-Genoa</model> <model usable='no' vendor='AMD'>EPYC</model> <model usable='no' vendor='Hygon'>Dhyana</model> <model usable='no' vendor='Intel'>Cooperlake</model> diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml index dbe1af68cb..919357e577 100644 --- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml @@ -114,6 +114,7 @@ <model usable='no' vendor='AMD'>EPYC-Rome</model> <model usable='no' vendor='AMD'>EPYC-Milan</model> <model usable='yes' vendor='AMD'>EPYC-IBPB</model> + <model usable='no' vendor='AMD'>EPYC-Genoa</model> <model usable='yes' vendor='AMD'>EPYC</model> <model usable='yes' vendor='Hygon'>Dhyana</model> <model usable='no' vendor='Intel'>Cooperlake</model> -- 2.39.2

On Wed, Sep 06, 2023 at 01:20:27PM +0200, Tim Wiederhake wrote:
Plus one drive-by improvement to sync_qemu_features_i386.py.
Tim Wiederhake (2): cpu_map: Ignore all vmx-* features in sync_qemu_features_i386.py cpu_map: Add cpu model EPYC Genoa
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
src/cpu_map/index.xml | 1 + src/cpu_map/meson.build | 1 + src/cpu_map/sync_qemu_features_i386.py | 90 +------------- src/cpu_map/x86_EPYC-Genoa.xml | 115 ++++++++++++++++++ .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml | 1 + .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml | 1 + tests/domaincapsdata/qemu_8.1.0.x86_64.xml | 1 + 7 files changed, 121 insertions(+), 89 deletions(-) create mode 100644 src/cpu_map/x86_EPYC-Genoa.xml
-- 2.39.2
participants (2)
-
Martin Kletzander
-
Tim Wiederhake