diff options
author | Andi Kleen <ak@suse.de> | 2005-09-12 18:49:24 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-12 10:50:56 -0700 |
commit | 5bf97e01192f0fcdff2f0e9eae063e7785f6f915 (patch) | |
tree | ef7139d95cfa67c2a80884cb60382342ad5bf79c /arch/x86_64 | |
parent | 27183ebd330a676fe29f7eb9b7ff582492246ec8 (diff) | |
download | op-kernel-dev-5bf97e01192f0fcdff2f0e9eae063e7785f6f915.zip op-kernel-dev-5bf97e01192f0fcdff2f0e9eae063e7785f6f915.tar.gz |
[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>
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/genapic.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86_64/kernel/genapic.c b/arch/x86_64/kernel/genapic.c index fe416fd..7a64ea1 100644 --- a/arch/x86_64/kernel/genapic.c +++ b/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: |