Messages in this thread | | | Date | 2 Jun 2005 20:50:53 +0200 | Date | Thu, 2 Jun 2005 20:50:53 +0200 | From | Andi Kleen <> | Subject | Re: 2.6.12-rc5 is broken in nvidia Ck804 Opteron MB/with dual cor e dual way |
| |
On Wed, Jun 01, 2005 at 08:16:35PM -0700, YhLu wrote: > andi, > > in arch/x86_64/kernel/smboot.c, function detect_siblings(), > > because smp_num_siblings is always =1, so several lines can be removed.
What do you mean? On intel systems with HyperThreading it is > 1. > > 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]);
That would just change the timing.
-Andi - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |