aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-31 23:13:57 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-08-31 23:14:22 -0400
commit3b2b64fd311c92f2137eb7cee7025794cd854057 (patch)
tree60820982c28aa6d0a67d6aa555a68ca2413db45a
parent618a821dc24a4018b0c5c01785d052459a90edb4 (diff)
Do not use the ia64 clocksource on non-ia64 architectures
The HPET clocksource in drivers/char/hpet.c was written as generic code for ia64, but it is not yet ready to replace the native HPET clocksource implementations that the i386/x86-64 architectures use. On x86[-64], trying to register this clocksource results in potentially multiple hpet-based clocksources being registered, and if the ia64 one is chosen on x86_64 some users have experienced hangs. Eventually all three architectures may end up using the same code, but that is not the case right now. Cc: John Stultz <johnstul@us.ibm.com> Cc: Tony Luck <tony.luck@intel.com> Cc: Paolo Ornati <ornati@fastwebnet.it> Cc: Bob Picco <bob.picco@hp.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/char/hpet.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index 77bf4aa217a8..7ecffc9c738f 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -909,6 +909,8 @@ int hpet_alloc(struct hpet_data *hdp)
909 909
910 hpetp->hp_delta = hpet_calibrate(hpetp); 910 hpetp->hp_delta = hpet_calibrate(hpetp);
911 911
912/* This clocksource driver currently only works on ia64 */
913#ifdef CONFIG_IA64
912 if (!hpet_clocksource) { 914 if (!hpet_clocksource) {
913 hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc; 915 hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
914 CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr); 916 CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
@@ -918,6 +920,7 @@ int hpet_alloc(struct hpet_data *hdp)
918 hpetp->hp_clocksource = &clocksource_hpet; 920 hpetp->hp_clocksource = &clocksource_hpet;
919 hpet_clocksource = &clocksource_hpet; 921 hpet_clocksource = &clocksource_hpet;
920 } 922 }
923#endif
921 924
922 return 0; 925 return 0;
923} 926}