瀏覽代碼

[PATCH] x86-64: Use physflat on Intel for < 8 CPUs with CPU hotplug

This avoids races with the APIC broadcast/mask modes.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Andi Kleen 20 年之前
父節點
當前提交
5bf97e0119
共有 1 個文件被更改,包括 7 次插入2 次删除
  1. 7 2
      arch/x86_64/kernel/genapic.c

+ 7 - 2
arch/x86_64/kernel/genapic.c

@@ -104,9 +104,14 @@ void __init clustered_apic_check(void)
 	 * (We don't use lowest priority delivery + HW APIC IRQ steering, so
 	 * can ignore the clustered logical case and go straight to physical.)
 	 */
-	if (clusters <= 1 && max_cluster <= 8 && cluster_cnt[0] == max_cluster)
+	if (clusters <= 1 && max_cluster <= 8 && cluster_cnt[0] == max_cluster) {
+#ifdef CONFIG_HOTPLUG_CPU
+		/* Don't use APIC shortcuts in CPU hotplug to avoid races */
+		genapic = &apic_physflat;
+#else
 		genapic = &apic_flat;
-	else
+#endif
+	} else
 		genapic = &apic_cluster;
 
 print: