// Physical die ID on AMD, Relative on Intel
        u32                     die_id;
 
+       // Compute unit ID - AMD specific
+       u32                     cu_id;
+
        // Core ID relative to the package
        u32                     core_id;
 };
        __u8                    x86_phys_bits;
        /* CPUID returned core id bits: */
        __u8                    x86_coreid_bits;
-       __u8                    cu_id;
        /* Max extended CPUID function supported: */
        __u32                   extended_cpuid_level;
        /* Maximum supported CPUID level, -1=no CPUID: */
 
                c->topo.die_id  = ecx & 0xff;
 
                if (c->x86 == 0x15)
-                       c->cu_id = ebx & 0xff;
+                       c->topo.cu_id = ebx & 0xff;
 
                if (c->x86 >= 0x17) {
                        c->topo.core_id = ebx & 0xff;
 
        c->x86_model_id[0] = '\0';  /* Unset */
        c->x86_max_cores = 1;
        c->x86_coreid_bits = 0;
-       c->cu_id = 0xff;
+       c->topo.cu_id = 0xff;
 #ifdef CONFIG_X86_64
        c->x86_clflush_size = 64;
        c->x86_phys_bits = 36;
 
                        if (c->topo.core_id == o->topo.core_id)
                                return topology_sane(c, o, "smt");
 
-                       if ((c->cu_id != 0xff) &&
-                           (o->cu_id != 0xff) &&
-                           (c->cu_id == o->cu_id))
+                       if ((c->topo.cu_id != 0xff) &&
+                           (o->topo.cu_id != 0xff) &&
+                           (c->topo.cu_id == o->topo.cu_id))
                                return topology_sane(c, o, "smt");
                }