https://issues.dlang.org/show_bug.cgi?id=24254

--- Comment #7 from Jure Pečar <jurij.pe...@embl.de> ---
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.

--

Reply via email to