RE: 2.6.12-rc5 is broken in nvidia Ck804 Opteron MB/with dual cor e dual way

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Brought up 4 CPUs
    CPU 0, cpu_sibling_map[0]= 1 
    CPU 0, cpu_core_map[0]= 3 
    CPU 1, cpu_sibling_map[1]= 2 
    CPU 1, cpu_core_map[1]= 3 
    CPU 2, cpu_sibling_map[2]= 4 
    CPU 2, cpu_core_map[2]= c 
    CPU 3, cpu_sibling_map[3]= 8 
    CPU 3, cpu_core_map[3]= c 
are the cpu_sibling_map[] right? 

YH

> -----Original Message-----
> From: YhLu 
> Sent: Wednesday, June 01, 2005 8:17 PM
> To: Andi Kleen
> Cc: [email protected]
> Subject: RE: 2.6.12-rc5 is broken in nvidia Ck804 Opteron 
> MB/with dual cor e dual way
> 
> andi,
> 
> in arch/x86_64/kernel/smboot.c, function detect_siblings(),
> 
> because smp_num_siblings is always =1,  so several lines can 
> be removed.
> 
>         for_each_online_cpu (cpu) {
>                 struct cpuinfo_x86 *c = cpu_data + cpu;
> *R*                int siblings = 0;
>                 int i;
> *R*                if (smp_num_siblings > 1) {
> *R*                        for_each_online_cpu (i) {
> *R*                                if (cpu_core_id[cpu] == 
> cpu_core_id[i]) {
> *R*                                        siblings++;
> *R*                                        cpu_set(i, 
> cpu_sibling_map[cpu]);
> *R*                                }
> *R*                        }
> *R*                } else {
> *R*                      siblings++;
>                         cpu_set(cpu, cpu_sibling_map[cpu]);
> *R*                }
> 
> 
>  *R*               if (siblings != smp_num_siblings) {
>  *R*                       printk(KERN_WARNING
>  *R*              "WARNING: %d siblings found for CPU%d, 
> should be %d\n",
>  *R*                              siblings, cpu, smp_num_siblings);
>  *R*                       smp_num_siblings = siblings;
>  *R*               }
> 
> Also I found the workaround for hang on second node is adding 
> one line in setup.c
>         /* Low order bits define the core id (index of core 
> in socket) */
>         cpu_core_id[cpu] = phys_proc_id[cpu] & ((1 << bits)-1);
>         /* Convert the APIC ID into the socket ID */
>         phys_proc_id[cpu] >>= bits;
> +        printk(KERN_INFO "  CPU %d(%d)  phys_proc_id %d  Core %d\n", 
> +               cpu, c->x86_num_cores, phys_proc_id[cpu], 
> + cpu_core_id[cpu]);
> 
> My compile environment SUSE 9.2 gcc version is 3.3.3???
> 
> YH
> 
> -
> To unsubscribe from this list: send the line "unsubscribe 
> linux-kernel" in the body of a message to 
> [email protected] More majordomo info at  
> http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux