From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 41F229AAE9 for ; Mon, 22 May 2023 12:26:10 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1874A2FBC5 for ; Mon, 22 May 2023 12:25:40 +0200 (CEST) Received: from bastionodiso.odiso.net (bastionodiso.odiso.net [IPv6:2a0a:1580:2000::2d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 22 May 2023 12:25:37 +0200 (CEST) Received: from kvmformation3.odiso.net (formationkvm3.odiso.net [10.3.94.12]) by bastionodiso.odiso.net (Postfix) with ESMTP id E61ED8B62; Mon, 22 May 2023 12:25:29 +0200 (CEST) Received: by kvmformation3.odiso.net (Postfix, from userid 0) id E40482E807B; Mon, 22 May 2023 12:25:29 +0200 (CEST) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Mon, 22 May 2023 12:25:20 +0200 Message-Id: <20230522102528.186955-2-aderumier@odiso.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230522102528.186955-1-aderumier@odiso.com> References: <20230522102528.186955-1-aderumier@odiso.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.015 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy HEADER_FROM_DIFFERENT_DOMAINS 0.25 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v3 qemu-server 1/7] cpuconfig: add new x86-64-vX models X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 May 2023 10:26:10 -0000 https://lore.kernel.org/all/20210526144038.278899-1-berrange@redhat.com/T/ " In 2020, AMD, Intel, Red Hat, and SUSE worked together to define three microarchitecture levels on top of the historical x86-64 baseline: * x86-64: original x86_64 baseline instruction set * x86-64-v2: vector instructions up to Streaming SIMD Extensions 4.2 (SSE4.2) and Supplemental Streaming SIMD Extensions 3 (SSSE3), the POPCNT instruction, and CMPXCHG16B * x86-64-v3: vector instructions up to AVX2, MOVBE, and additional bit-manipulation instructions. * x86-64-v4: vector instructions from some of the AVX-512 variants. " This patch add new builtin model derivated from original models, to be compatible between intel/amd. x86-64-v1 : Derived from Opteron_G1, minus vme x86-64-v2 : Derived from Nehalem, -vme,+aes min intel: Westmere (because of aes) min amd : Opteron_G3 x86-64-v3 : Derived from Haswell-noTSX, -pcid,-erms,-invpcid,-tsc-deadline,-x2apic,-pclmulqdq,+aes min intel: Haswell min amd : EPYC_v1 x86-64-v4 : Derived from Skylake-Server-noTSX-IBRS, -spec-ctrl min intel: Skylake min amd : EPYC_v4 (v4 model not yet exposed, because not yet tested, other models have been tested) Signed-off-by: Alexandre Derumier --- PVE/QemuServer/CPUConfig.pm | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/PVE/QemuServer/CPUConfig.pm b/PVE/QemuServer/CPUConfig.pm index fb0861b..54bbd55 100644 --- a/PVE/QemuServer/CPUConfig.pm +++ b/PVE/QemuServer/CPUConfig.pm @@ -31,6 +31,25 @@ sub load_custom_model_conf { return cfs_read_file($default_filename); } +my $builtin_models = { + 'x86-64-v1' => { + 'reported-model' => 'Opteron_G1', + flags => "-vme;-svm;-vmx", + }, + 'x86-64-v2' => { + 'reported-model' => 'Nehalem', + flags => "+aes;-svm;-vmx", + }, + 'x86-64-v3' => { + 'reported-model' => 'Haswell-noTSX', + flags => "+aes;-pcid;-erms;-invpcid;-tsc-deadline;-x2apic;-pclmulqdq;-svm;-vmx", + }, +# 'x86-64-v4' => { +# 'reported-model' => 'Skylake-Server-noTSX-IBRS', +# flags => "+aes;-spec-ctrl;-svm;-vmx", +# }, +}; + my $depreacated_cpu_map = { # there never was such a client CPU, so map it to the server one for backward compat 'Icelake-Client' => 'Icelake-Server', @@ -96,6 +115,9 @@ my $cpu_vendor_list = { kvm64 => 'default', qemu32 => 'default', qemu64 => 'default', + 'x86-64-v1' => 'default', + 'x86-64-v2' => 'default', + 'x86-64-v3' => 'default', max => 'default', }; @@ -359,7 +381,10 @@ sub print_cpu_device { or die "Cannot parse cpu description: $cputype\n"; $cpu = $cpuconf->{cputype}; - if (is_custom_model($cpu)) { + if (my $model = $builtin_models->{$cpu}) { + $cpu = $model->{'reported-model'} // $cpu_fmt->{'reported-model'}->{default}; + } + if (is_custom_model($cputype)) { my $custom_cpu = get_custom_model($cpu); $cpu = $custom_cpu->{'reported-model'} // $cpu_fmt->{'reported-model'}->{default}; @@ -474,7 +499,11 @@ sub get_cpu_options { or die "Cannot parse cpu description: $cpu_prop_str\n"; $cputype = $cpu->{cputype}; - + if (my $model = $builtin_models->{$cputype}) { + my $model = $builtin_models->{$cputype}; + $cputype = $model->{'reported-model'} // $cpu_fmt->{'reported-model'}->{default}; + $custom_cpu->{flags} = $model->{'flags'}; + } if (is_custom_model($cputype)) { $custom_cpu = get_custom_model($cputype); -- 2.30.2