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); |
