https://issues.dlang.org/show_bug.cgi?id=24254
--- Comment #7 from Jure Pečar <[email protected]> --- Here's a diff of `cpuid -1` output from 32c Genoa (-) and 128c Bergamo (+): @@ -3,16 +3,16 @@ version information (1/eax): processor type = primary processor (0) family = 0xf (15) - model = 0x1 (1) - stepping id = 0x1 (1) + model = 0x0 (0) + stepping id = 0x2 (2) extended family = 0xa (10) - extended model = 0x1 (1) + extended model = 0xa (10) (family synth) = 0x19 (25) - (model synth) = 0x11 (17) - (simple synth) = AMD EPYC (4th Gen) (Genoa B1) [Zen 4], 5nm + (model synth) = 0xa0 (160) + (simple synth) = AMD Ryzen (Bergamo) [Zen 4c], 5nm miscellaneous (1/ebx): - process local APIC physical ID = 0x10 (16) - maximum IDs for CPUs in pkg = 0x40 (64) + process local APIC physical ID = 0xd6 (214) + maximum IDs for CPUs in pkg = 0xff (255) CLFLUSH line size = 0x8 (8) brand index = 0x0 (0) brand id = 0x00 (0): unknown @@ -80,7 +80,7 @@ RDRAND instruction = true hypervisor guest status = false cache and TLB information (2): - processor serial number = 00A1-0F11-0000-0000-0000-0000 + processor serial number = 00AA-0F02-0000-0000-0000-0000 deterministic cache parameters (4): --- cache 0 --- cache type = no more caches (0) @@ -287,7 +287,7 @@ bit width of fixed counters = 0x0 (0) anythread deprecation = false x2APIC features / processor topology (0xb): - extended APIC ID = 16 + extended APIC ID = 214 --- level 0 --- level number = 0x0 (0) level type = thread (1) @@ -296,8 +296,8 @@ --- level 1 --- level number = 0x1 (1) level type = core (2) - bit width of level & previous levels = 0x6 (6) - number of logical processors at level = 0x40 (64) + bit width of level & previous levels = 0x8 (8) + number of logical processors at level = 0x100 (256) --- level 2 --- level number = 0x2 (2) level type = invalid (0) @@ -401,13 +401,13 @@ highest COS number supported = 0xf (15) extended processor signature (0x80000001/eax): family/generation = 0xf (15) - model = 0x1 (1) - stepping id = 0x1 (1) + model = 0x0 (0) + stepping id = 0x2 (2) extended family = 0xa (10) - extended model = 0x1 (1) + extended model = 0xa (10) (family synth) = 0x19 (25) - (model synth) = 0x11 (17) - (simple synth) = AMD EPYC (4th Gen) (Genoa B1) [Zen 4], 5nm + (model synth) = 0xa0 (160) + (simple synth) = AMD Ryzen (Bergamo) [Zen 4c], 5nm extended feature flags (0x80000001/edx): x87 FPU on chip = true virtual-8086 mode enhancement = true @@ -469,7 +469,7 @@ LLC performance counter extensions = true MWAITX/MONITORX supported = true Address mask extension support = true - brand = "AMD EPYC 9334 32-Core Processor " + brand = "AMD EPYC 9754 128-Core Processor " L1 TLB/cache information: 2M/4M pages & L1 TLB (0x80000005/eax): instruction # entries = 0x40 (64) instruction associativity = 0xff (255) @@ -509,7 +509,7 @@ line size (bytes) = 0x40 (64) lines per tag = 0x1 (1) associativity = 0x9 (9) - size (in 512KB units) = 0x100 (256) + size (in 512KB units) = 0x200 (512) RAS Capability (0x80000007/ebx): MCA overflow recovery support = true SUCCOR support = true @@ -566,8 +566,8 @@ branch sampling feature support = false (vuln to branch type confusion synth) = false Size Identifiers (0x80000008/ecx): - number of threads = 0x40 (64) - ApicIdCoreIdSize = 0x6 (6) + number of threads = 0x100 (256) + ApicIdCoreIdSize = 0x8 (8) performance time-stamp counter size = 40 bits (0) Feature Extended Size (0x80000008/edx): max page count for INVLPGB instruction = 0x7 (7) @@ -714,13 +714,13 @@ line size in bytes = 0x40 (64) physical line partitions = 0x1 (1) number of ways = 0x10 (16) - number of sets = 32768 + number of sets = 16384 write-back invalidate = true cache inclusive of lower levels = false - (synth size) = 33554432 (32 MB) - extended APIC ID = 16 + (synth size) = 16777216 (16 MB) + extended APIC ID = 214 Core Identifiers (0x8000001e/ebx): - core ID = 0x8 (8) + core ID = 0x6b (107) threads per core = 0x2 (2) Node Identifiers (0x8000001e/ecx): node ID = 0x0 (0) @@ -799,14 +799,14 @@ number of LBR stack entries = 0x10 (16) number of avail Northbridge perf ctrs = 0x10 (16) number of available UMC PMCs = 0x20 (32) - active UMCs bitmask = 0x6db + active UMCs bitmask = 0xfff Multi-Key Encrypted Memory Capabilities (0x80000023): secure host multi-key memory support = true number of encryption key IDs = 0x3f (63) 0x80000024 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 0x80000025 0x00: eax=0x00000000 ebx=0x00000000 ecx=0x00000000 edx=0x00000000 AMD Extended CPU Topology (0x80000026): - extended APIC ID = 16 + extended APIC ID = 214 --- level 0 --- level number = 0x0 (0) level type = core (1) @@ -821,9 +821,9 @@ CMPXCHG8B = true conditional move/compare = true PREFETCH/PREFETCHW = true - (multi-processing synth) = multi-core (c=32), hyper-threaded (t=2) + (multi-processing synth) = multi-core (c=128), hyper-threaded (t=2) (multi-processing method) = AMD leaf 0xb - (APIC widths synth): CORE_width=5 SMT_width=1 - (APIC synth): PKG_ID=0 CORE_ID=8 SMT_ID=0 - (uarch synth) = AMD Zen 4, 5nm - (synth) = AMD EPYC (4th Gen) (Genoa B1) [Zen 4], 5nm + (APIC widths synth): CORE_width=7 SMT_width=1 + (APIC synth): PKG_ID=0 CORE_ID=107 SMT_ID=0 + (uarch synth) = AMD Zen 4c, 5nm + (synth) = AMD Ryzen (Bergamo) [Zen 4c], 5nm Since that cpuid.d is mostly poking around these register values, I'm pretty sure that the key to fixing this issue is hiding in here. --
