|
| 1 | +diff --git a/PVE/QemuServer/CPUConfig.pm b/PVE/QemuServer/CPUConfig.pm |
| 2 | +index f5344716..df8ea459 100644 |
| 3 | +--- a/PVE/QemuServer/CPUConfig.pm |
| 4 | ++++ b/PVE/QemuServer/CPUConfig.pm |
| 5 | +@@ -39,22 +39,22 @@ sub load_custom_model_conf { |
| 6 | + |
| 7 | + #builtin models : reported-model is mandatory |
| 8 | + my $builtin_models = { |
| 9 | +- # 'x86-64-v2' => { |
| 10 | +- # 'reported-model' => 'qemu64', |
| 11 | +- # flags => "+popcnt;+pni;+sse4.1;+sse4.2;+ssse3", |
| 12 | +- # }, |
| 13 | +- # 'x86-64-v2-AES' => { |
| 14 | +- # 'reported-model' => 'qemu64', |
| 15 | +- # flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3", |
| 16 | +- # }, |
| 17 | +- # 'x86-64-v3' => { |
| 18 | +- # 'reported-model' => 'qemu64', |
| 19 | +- # flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3;+avx;+avx2;+bmi1;+bmi2;+f16c;+fma;+abm;+movbe;+xsave", |
| 20 | +- # }, |
| 21 | +- # 'x86-64-v4' => { |
| 22 | +- # 'reported-model' => 'qemu64', |
| 23 | +- # flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3;+avx;+avx2;+bmi1;+bmi2;+f16c;+fma;+abm;+movbe;+xsave;+avx512f;+avx512bw;+avx512cd;+avx512dq;+avx512vl", |
| 24 | +- # }, |
| 25 | ++ 'x86-64-v2' => { |
| 26 | ++ 'reported-model' => 'qemu64', |
| 27 | ++ flags => "+popcnt;+pni;+sse4.1;+sse4.2;+ssse3", |
| 28 | ++ }, |
| 29 | ++ 'x86-64-v2-AES' => { |
| 30 | ++ 'reported-model' => 'qemu64', |
| 31 | ++ flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3", |
| 32 | ++ }, |
| 33 | ++ 'x86-64-v3' => { |
| 34 | ++ 'reported-model' => 'qemu64', |
| 35 | ++ flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3;+avx;+avx2;+bmi1;+bmi2;+f16c;+fma;+abm;+movbe;+xsave", |
| 36 | ++ }, |
| 37 | ++ 'x86-64-v4' => { |
| 38 | ++ 'reported-model' => 'qemu64', |
| 39 | ++ flags => "+aes;+popcnt;+pni;+sse4.1;+sse4.2;+ssse3;+avx;+avx2;+bmi1;+bmi2;+f16c;+fma;+abm;+movbe;+xsave;+avx512f;+avx512bw;+avx512cd;+avx512dq;+avx512vl", |
| 40 | ++ }, |
| 41 | + }; |
| 42 | + |
| 43 | + my $depreacated_cpu_map = { |
| 44 | +@@ -76,99 +76,99 @@ my $cputypes_32bit = { |
| 45 | + |
| 46 | + my $cpu_vendor_list = { |
| 47 | + # Intel CPUs |
| 48 | +- # 486 => 'GenuineIntel', |
| 49 | +- # pentium => 'GenuineIntel', |
| 50 | +- # pentium2 => 'GenuineIntel', |
| 51 | +- # pentium3 => 'GenuineIntel', |
| 52 | +- # coreduo => 'GenuineIntel', |
| 53 | +- # core2duo => 'GenuineIntel', |
| 54 | +- # Conroe => 'GenuineIntel', |
| 55 | +- # Penryn => 'GenuineIntel', |
| 56 | +- # Nehalem => 'GenuineIntel', |
| 57 | +- # 'Nehalem-IBRS' => 'GenuineIntel', |
| 58 | +- # Westmere => 'GenuineIntel', |
| 59 | +- # 'Westmere-IBRS' => 'GenuineIntel', |
| 60 | +- # SandyBridge => 'GenuineIntel', |
| 61 | +- # 'SandyBridge-IBRS' => 'GenuineIntel', |
| 62 | +- # IvyBridge => 'GenuineIntel', |
| 63 | +- # 'IvyBridge-IBRS' => 'GenuineIntel', |
| 64 | +- # Haswell => 'GenuineIntel', |
| 65 | +- # 'Haswell-IBRS' => 'GenuineIntel', |
| 66 | +- # 'Haswell-noTSX' => 'GenuineIntel', |
| 67 | +- # 'Haswell-noTSX-IBRS' => 'GenuineIntel', |
| 68 | +- # Broadwell => 'GenuineIntel', |
| 69 | +- # 'Broadwell-IBRS' => 'GenuineIntel', |
| 70 | +- # 'Broadwell-noTSX' => 'GenuineIntel', |
| 71 | +- # 'Broadwell-noTSX-IBRS' => 'GenuineIntel', |
| 72 | +- # 'Skylake-Client' => 'GenuineIntel', |
| 73 | +- # 'Skylake-Client-IBRS' => 'GenuineIntel', |
| 74 | +- # 'Skylake-Client-noTSX-IBRS' => 'GenuineIntel', |
| 75 | +- # 'Skylake-Client-v4' => 'GenuineIntel', |
| 76 | +- # 'Skylake-Server' => 'GenuineIntel', |
| 77 | +- # 'Skylake-Server-IBRS' => 'GenuineIntel', |
| 78 | +- # 'Skylake-Server-noTSX-IBRS' => 'GenuineIntel', |
| 79 | +- # 'Skylake-Server-v4' => 'GenuineIntel', |
| 80 | +- # 'Skylake-Server-v5' => 'GenuineIntel', |
| 81 | +- # 'Cascadelake-Server' => 'GenuineIntel', |
| 82 | +- # 'Cascadelake-Server-v2' => 'GenuineIntel', |
| 83 | +- # 'Cascadelake-Server-noTSX' => 'GenuineIntel', |
| 84 | +- # 'Cascadelake-Server-v4' => 'GenuineIntel', |
| 85 | +- # 'Cascadelake-Server-v5' => 'GenuineIntel', |
| 86 | +- # 'Cooperlake' => 'GenuineIntel', |
| 87 | +- # 'Cooperlake-v2' => 'GenuineIntel', |
| 88 | +- # KnightsMill => 'GenuineIntel', |
| 89 | +- # 'Icelake-Client' => 'GenuineIntel', # depreacated, removed with QEMU 7.1 |
| 90 | +- # 'Icelake-Client-noTSX' => 'GenuineIntel', # depreacated, removed with QEMU 7.1 |
| 91 | +- # 'Icelake-Server' => 'GenuineIntel', |
| 92 | +- # 'Icelake-Server-noTSX' => 'GenuineIntel', |
| 93 | +- # 'Icelake-Server-v3' => 'GenuineIntel', |
| 94 | +- # 'Icelake-Server-v4' => 'GenuineIntel', |
| 95 | +- # 'Icelake-Server-v5' => 'GenuineIntel', |
| 96 | +- # 'Icelake-Server-v6' => 'GenuineIntel', |
| 97 | +- # 'SapphireRapids' => 'GenuineIntel', |
| 98 | +- |
| 99 | +- # # AMD CPUs |
| 100 | +- # athlon => 'AuthenticAMD', |
| 101 | +- # phenom => 'AuthenticAMD', |
| 102 | +- # Opteron_G1 => 'AuthenticAMD', |
| 103 | +- # Opteron_G2 => 'AuthenticAMD', |
| 104 | +- # Opteron_G3 => 'AuthenticAMD', |
| 105 | +- # Opteron_G4 => 'AuthenticAMD', |
| 106 | +- # Opteron_G5 => 'AuthenticAMD', |
| 107 | +- # EPYC => 'AuthenticAMD', |
| 108 | +- # 'EPYC-IBPB' => 'AuthenticAMD', |
| 109 | +- # 'EPYC-v3' => 'AuthenticAMD', |
| 110 | +- #'EPYC-v4' => 'AuthenticAMD', |
| 111 | +- # 'EPYC-Rome' => 'AuthenticAMD', |
| 112 | +- # 'EPYC-Rome-v2' => 'AuthenticAMD', |
| 113 | +- #'EPYC-Rome-v3' => 'AuthenticAMD', |
| 114 | +- #'EPYC-Rome-v4' => 'AuthenticAMD', |
| 115 | +- #'EPYC-Milan' => 'AuthenticAMD', |
| 116 | +- #'EPYC-Milan-v2' => 'AuthenticAMD', |
| 117 | +- #'EPYC-Genoa' => 'AuthenticAMD', |
| 118 | ++ 486 => 'GenuineIntel', |
| 119 | ++ pentium => 'GenuineIntel', |
| 120 | ++ pentium2 => 'GenuineIntel', |
| 121 | ++ pentium3 => 'GenuineIntel', |
| 122 | ++ coreduo => 'GenuineIntel', |
| 123 | ++ core2duo => 'GenuineIntel', |
| 124 | ++ Conroe => 'GenuineIntel', |
| 125 | ++ Penryn => 'GenuineIntel', |
| 126 | ++ Nehalem => 'GenuineIntel', |
| 127 | ++ 'Nehalem-IBRS' => 'GenuineIntel', |
| 128 | ++ Westmere => 'GenuineIntel', |
| 129 | ++ 'Westmere-IBRS' => 'GenuineIntel', |
| 130 | ++ SandyBridge => 'GenuineIntel', |
| 131 | ++ 'SandyBridge-IBRS' => 'GenuineIntel', |
| 132 | ++ IvyBridge => 'GenuineIntel', |
| 133 | ++ 'IvyBridge-IBRS' => 'GenuineIntel', |
| 134 | ++ Haswell => 'GenuineIntel', |
| 135 | ++ 'Haswell-IBRS' => 'GenuineIntel', |
| 136 | ++ 'Haswell-noTSX' => 'GenuineIntel', |
| 137 | ++ 'Haswell-noTSX-IBRS' => 'GenuineIntel', |
| 138 | ++ Broadwell => 'GenuineIntel', |
| 139 | ++ 'Broadwell-IBRS' => 'GenuineIntel', |
| 140 | ++ 'Broadwell-noTSX' => 'GenuineIntel', |
| 141 | ++ 'Broadwell-noTSX-IBRS' => 'GenuineIntel', |
| 142 | ++ 'Skylake-Client' => 'GenuineIntel', |
| 143 | ++ 'Skylake-Client-IBRS' => 'GenuineIntel', |
| 144 | ++ 'Skylake-Client-noTSX-IBRS' => 'GenuineIntel', |
| 145 | ++ 'Skylake-Client-v4' => 'GenuineIntel', |
| 146 | ++ 'Skylake-Server' => 'GenuineIntel', |
| 147 | ++ 'Skylake-Server-IBRS' => 'GenuineIntel', |
| 148 | ++ 'Skylake-Server-noTSX-IBRS' => 'GenuineIntel', |
| 149 | ++ 'Skylake-Server-v4' => 'GenuineIntel', |
| 150 | ++ 'Skylake-Server-v5' => 'GenuineIntel', |
| 151 | ++ 'Cascadelake-Server' => 'GenuineIntel', |
| 152 | ++ 'Cascadelake-Server-v2' => 'GenuineIntel', |
| 153 | ++ 'Cascadelake-Server-noTSX' => 'GenuineIntel', |
| 154 | ++ 'Cascadelake-Server-v4' => 'GenuineIntel', |
| 155 | ++ 'Cascadelake-Server-v5' => 'GenuineIntel', |
| 156 | ++ 'Cooperlake' => 'GenuineIntel', |
| 157 | ++ 'Cooperlake-v2' => 'GenuineIntel', |
| 158 | ++ KnightsMill => 'GenuineIntel', |
| 159 | ++ 'Icelake-Client' => 'GenuineIntel', # depreacated, removed with QEMU 7.1 |
| 160 | ++ 'Icelake-Client-noTSX' => 'GenuineIntel', # depreacated, removed with QEMU 7.1 |
| 161 | ++ 'Icelake-Server' => 'GenuineIntel', |
| 162 | ++ 'Icelake-Server-noTSX' => 'GenuineIntel', |
| 163 | ++ 'Icelake-Server-v3' => 'GenuineIntel', |
| 164 | ++ 'Icelake-Server-v4' => 'GenuineIntel', |
| 165 | ++ 'Icelake-Server-v5' => 'GenuineIntel', |
| 166 | ++ 'Icelake-Server-v6' => 'GenuineIntel', |
| 167 | ++ 'SapphireRapids' => 'GenuineIntel', |
| 168 | ++ |
| 169 | ++ # AMD CPUs |
| 170 | ++ athlon => 'AuthenticAMD', |
| 171 | ++ phenom => 'AuthenticAMD', |
| 172 | ++ Opteron_G1 => 'AuthenticAMD', |
| 173 | ++ Opteron_G2 => 'AuthenticAMD', |
| 174 | ++ Opteron_G3 => 'AuthenticAMD', |
| 175 | ++ Opteron_G4 => 'AuthenticAMD', |
| 176 | ++ Opteron_G5 => 'AuthenticAMD', |
| 177 | ++ EPYC => 'AuthenticAMD', |
| 178 | ++ 'EPYC-IBPB' => 'AuthenticAMD', |
| 179 | ++ 'EPYC-v3' => 'AuthenticAMD', |
| 180 | ++ 'EPYC-v4' => 'AuthenticAMD', |
| 181 | ++ 'EPYC-Rome' => 'AuthenticAMD', |
| 182 | ++ 'EPYC-Rome-v2' => 'AuthenticAMD', |
| 183 | ++ 'EPYC-Rome-v3' => 'AuthenticAMD', |
| 184 | ++ 'EPYC-Rome-v4' => 'AuthenticAMD', |
| 185 | ++ 'EPYC-Milan' => 'AuthenticAMD', |
| 186 | ++ 'EPYC-Milan-v2' => 'AuthenticAMD', |
| 187 | ++ 'EPYC-Genoa' => 'AuthenticAMD', |
| 188 | + |
| 189 | + # # generic types, use vendor from host node |
| 190 | + # host => 'default', |
| 191 | +- # kvm32 => 'default', |
| 192 | +- # kvm64 => 'default', |
| 193 | +- # qemu32 => 'default', |
| 194 | +- # qemu64 => 'default', |
| 195 | ++ kvm32 => 'default', |
| 196 | ++ kvm64 => 'default', |
| 197 | ++ qemu32 => 'default', |
| 198 | ++ qemu64 => 'default', |
| 199 | + # max => 'default', |
| 200 | + # virt arm64 cpus |
| 201 | + 'host' => 'default', |
| 202 | +- 'cortex-a35' => 'default', |
| 203 | +- 'cortex-a53' => 'default', |
| 204 | +- 'cortex-a55' => 'default', |
| 205 | +- 'cortex-a57' => 'default', |
| 206 | +- 'cortex-a72' => 'default', |
| 207 | +- 'cortex-a76' => 'default', |
| 208 | +- 'neoverse-n1' => 'default', |
| 209 | ++ 'cortex-a35' => 'ARM', |
| 210 | ++ 'cortex-a53' => 'ARM', |
| 211 | ++ 'cortex-a55' => 'ARM', |
| 212 | ++ 'cortex-a57' => 'ARM', |
| 213 | ++ 'cortex-a72' => 'ARM', |
| 214 | ++ 'cortex-a76' => 'ARM', |
| 215 | ++ 'neoverse-n1' => 'ARM', |
| 216 | + 'max' => 'default', |
| 217 | +- 'la464_loongarch_cpu' => 'default', |
| 218 | +- 'rv64' => 'default', |
| 219 | +- 'la464' => 'default', |
| 220 | +- 'la132' => 'default', |
| 221 | +- 'Kunpeng-920' => 'default', |
| 222 | ++ 'la464_loongarch_cpu' => 'LoongARCH', |
| 223 | ++ 'rv64' => 'RISCV', |
| 224 | ++ 'la464' => 'LoongARCH', |
| 225 | ++ 'la132' => 'LoongARCH', |
| 226 | ++ 'Kunpeng-920' => 'ARM', |
| 227 | + }; |
| 228 | + |
| 229 | + my @supported_cpu_flags = ( |
| 230 | +@@ -635,15 +635,12 @@ sub get_cpu_options { |
| 231 | + |
| 232 | + # $cputype is the "reported-model" for custom types, so we can just look up |
| 233 | + # the vendor in the default list |
| 234 | +- my $cpu_vendor = $cpu_vendor_list->{$cputype}; |
| 235 | ++ my $cpu_vendor = $cpu_vendor_list->{$cputype} if $arch eq 'x86_64'; |
| 236 | + if ($cpu_vendor) { |
| 237 | +- $pve_forced_flags->{'vendor'} = { |
| 238 | +- value => $cpu_vendor, |
| 239 | +- } if $cpu_vendor ne 'default'; |
| 240 | +- } elsif ($arch ne 'loongarch64') { |
| 241 | +- die "internal error"; # should not happen |
| 242 | +- } |
| 243 | +- |
| 244 | ++ $pve_forced_flags->{'vendor'} = { |
| 245 | ++ value => $cpu_vendor, |
| 246 | ++ } if $cpu_vendor ne 'default'; |
| 247 | ++ } |
| 248 | + my $cpu_str = $cputype; |
| 249 | + |
| 250 | + # will be resolved in parameter order |
| 251 | +@@ -781,6 +778,7 @@ sub get_default_cpu_type { |
| 252 | + $cputype = 'host' if $arch eq 'arm'; |
| 253 | + $cputype = 'rv64' if $arch eq 'riscv64'; |
| 254 | + $cputype = 'max' if $arch eq 'loongarch64'; |
| 255 | ++ $cputype = 'host' if $arch eq 'x86_64'; |
| 256 | + |
| 257 | + return $cputype; |
| 258 | + } |
| 259 | +diff --git a/debian/changelog b/debian/changelog |
| 260 | +index caf93620..7b1cf9c2 100644 |
| 261 | +--- a/debian/changelog |
| 262 | ++++ b/debian/changelog |
| 263 | +@@ -1,8 +1,14 @@ |
| 264 | ++qemu-server (8.3.3+port3) bookworm; urgency=medium |
| 265 | ++ |
| 266 | ++ * Add x86_64 cpu for compatible with x86 host |
| 267 | ++ |
| 268 | ++ -- Jiangcuo <Jiangcuo@lierfang.com> Fri, 17 Jan 2025 11:57:51 +0800 |
| 269 | ++ |
| 270 | + qemu-server (8.3.3+port2) bookworm; urgency=medium |
| 271 | + |
| 272 | + * Add 'gicversion' param. |
| 273 | + |
| 274 | +- -- Jiangcuo <Jiangcuo@lierfang.com> Thu, 26 Dec 2024 12:13:33 +0800 |
| 275 | ++ -- Jiangcuo <Jiangcuo@lierfang.com> Thu, 26 Dec 2024 12:14:33 +0800 |
| 276 | + |
| 277 | + qemu-server (8.3.3+port) bookworm; urgency=medium |
| 278 | + |
0 commit comments