summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/es7000_32.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2008-11-18 08:14:14 -0800
committerIngo Molnar <mingo@elte.hu>2008-11-18 17:35:40 +0100
commitb5fe363b7d89577fcfda9b6cf0efc32760bbccc6 (patch)
tree42a9e04349bbd1538004b7b084144da65c38d486 /arch/x86/kernel/es7000_32.c
parentf632ddcc0786149c0e4bef9b6b44c96a75c0d074 (diff)
downloadop-kernel-dev-b5fe363b7d89577fcfda9b6cf0efc32760bbccc6.zip
op-kernel-dev-b5fe363b7d89577fcfda9b6cf0efc32760bbccc6.tar.gz
x86: use update_genapic to get rid of ES7000_CLUSTERED_APIC v2
Impact: clean up We can autodetect those system that need cluster apic, and update genapic accordingly. We can also remove wakeup.h for e7000, because it's default one is now the same as overall default mach_wakecpu.h Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/es7000_32.c')
-rw-r--r--arch/x86/kernel/es7000_32.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/arch/x86/kernel/es7000_32.c b/arch/x86/kernel/es7000_32.c
index fb3bfe6..71d7be6 100644
--- a/arch/x86/kernel/es7000_32.c
+++ b/arch/x86/kernel/es7000_32.c
@@ -38,6 +38,7 @@
#include <asm/io.h>
#include <asm/nmi.h>
#include <asm/smp.h>
+#include <asm/atomic.h>
#include <asm/apicdef.h>
#include <mach_mpparse.h>
#include <asm/genapic.h>
@@ -163,7 +164,6 @@ es7000_rename_gsi(int ioapic, int gsi)
return gsi;
}
-#ifdef CONFIG_ES7000_CLUSTERED_APIC
static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
{
unsigned long vect = 0, psaival = 0;
@@ -182,13 +182,24 @@ static int wakeup_secondary_cpu_via_mip(int cpu, unsigned long eip)
return 0;
}
+static void noop_wait_for_deassert(atomic_t *deassert_not_used)
+{
+}
+
static int __init es7000_update_genapic(void)
{
genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
+ /* MPENTIUMIII */
+ if (boot_cpu_data.x86 == 6 &&
+ (boot_cpu_data.x86_model >= 7 || boot_cpu_data.x86_model <= 11)) {
+ es7000_update_genapic_to_cluster();
+ genapic->wait_for_init_deassert = noop_wait_for_deassert;
+ genapic->wakeup_cpu = wakeup_secondary_cpu_via_mip;
+ }
+
return 0;
}
-#endif
void __init
setup_unisys(void)
@@ -206,9 +217,7 @@ setup_unisys(void)
es7000_plat = ES7000_CLASSIC;
ioapic_renumber_irq = es7000_rename_gsi;
-#ifdef CONFIG_ES7000_CLUSTERED_APIC
x86_quirks->update_genapic = es7000_update_genapic;
-#endif
}
/*
OpenPOWER on IntegriCloud