diff options
-rw-r--r-- | arch/x86/kernel/i8253.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/arch/x86/kernel/i8253.c b/arch/x86/kernel/i8253.c index a42c80745325..0f8f35458a8f 100644 --- a/arch/x86/kernel/i8253.c +++ b/arch/x86/kernel/i8253.c | |||
@@ -197,7 +197,15 @@ static struct clocksource clocksource_pit = { | |||
197 | 197 | ||
198 | static int __init init_pit_clocksource(void) | 198 | static int __init init_pit_clocksource(void) |
199 | { | 199 | { |
200 | if (num_possible_cpus() > 1) /* PIT does not scale! */ | 200 | /* |
201 | * Several reasons not to register PIT as a clocksource: | ||
202 | * | ||
203 | * - On SMP PIT does not scale due to i8253_lock | ||
204 | * - when HPET is enabled | ||
205 | * - when local APIC timer is active (PIT is switched off) | ||
206 | */ | ||
207 | if (num_possible_cpus() > 1 || is_hpet_enabled() || | ||
208 | pit_clockevent.mode != CLOCK_EVT_MODE_PERIODIC) | ||
201 | return 0; | 209 | return 0; |
202 | 210 | ||
203 | clocksource_pit.mult = clocksource_hz2mult(CLOCK_TICK_RATE, 20); | 211 | clocksource_pit.mult = clocksource_hz2mult(CLOCK_TICK_RATE, 20); |