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>
This commit is contained in:
parent
618a821dc2
commit
3b2b64fd31
1 changed files with 3 additions and 0 deletions
|
@ -909,6 +909,8 @@ int hpet_alloc(struct hpet_data *hdp)
|
|||
|
||||
hpetp->hp_delta = hpet_calibrate(hpetp);
|
||||
|
||||
/* This clocksource driver currently only works on ia64 */
|
||||
#ifdef CONFIG_IA64
|
||||
if (!hpet_clocksource) {
|
||||
hpet_mctr = (void __iomem *)&hpetp->hp_hpet->hpet_mc;
|
||||
CLKSRC_FSYS_MMIO_SET(clocksource_hpet.fsys_mmio, hpet_mctr);
|
||||
|
@ -918,6 +920,7 @@ int hpet_alloc(struct hpet_data *hdp)
|
|||
hpetp->hp_clocksource = &clocksource_hpet;
|
||||
hpet_clocksource = &clocksource_hpet;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue