[PATCH] Handle CPU cores in CPU cache information

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

 




Handle the case of all the cores in a package sharing the cache,
in cache_shared_cpu_map_setup().

Signed-off-by: Venkatesh Pallipadi <[email protected]>

diff -purN linux-2.6.12-rc4-mm2/arch/i386/kernel/cpu/intel_cacheinfo.c linux-2.6.12-rc4-mm2-cache/arch/i386/kernel/cpu/intel_cacheinfo.c
--- linux-2.6.12-rc4-mm2/arch/i386/kernel/cpu/intel_cacheinfo.c	2005-05-17 05:50:03.000000000 -0700
+++ linux-2.6.12-rc4-mm2-cache/arch/i386/kernel/cpu/intel_cacheinfo.c	2005-06-11 04:53:59.749155936 -0700
@@ -305,6 +305,9 @@ static void __devinit cache_shared_cpu_m
 {
 	struct _cpuid4_info	*this_leaf;
 	unsigned long num_threads_sharing;
+#ifdef CONFIG_X86_HT
+	struct cpuinfo_x86 *c = cpu_data + cpu;
+#endif
 
 	this_leaf = CPUID4_INFO_IDX(cpu, index);
 	num_threads_sharing = 1 + this_leaf->eax.split.num_threads_sharing;
@@ -314,10 +317,12 @@ static void __devinit cache_shared_cpu_m
 #ifdef CONFIG_X86_HT
 	else if (num_threads_sharing == smp_num_siblings)
 		this_leaf->shared_cpu_map = cpu_sibling_map[cpu];
-#endif
+	else if (num_threads_sharing == (c->x86_num_cores * smp_num_siblings))
+		this_leaf->shared_cpu_map = cpu_core_map[cpu];
 	else
-		printk(KERN_INFO "Number of CPUs sharing cache didn't match "
+		printk(KERN_DEBUG "Number of CPUs sharing cache didn't match "
 				"any known set of CPUs\n");
+#endif
 }
 #else
 static void __init cache_shared_cpu_map_setup(unsigned int cpu, int index) {}
-
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