DEFINE_SPINLOCK(i8253_lock);
 EXPORT_SYMBOL(i8253_lock);
 
+#ifdef CONFIG_X86_32
+static void pit_disable_clocksource(void);
+#else
+static inline void pit_disable_clocksource(void) { }
+#endif
+
 /*
  * HPET replaces the PIT, when enabled. So we need to know, which of
  * the two timers is used
                        outb_p(0, PIT_CH0);
                        outb_p(0, PIT_CH0);
                }
+               pit_disable_clocksource();
                break;
 
        case CLOCK_EVT_MODE_ONESHOT:
                /* One shot setup */
                outb_p(0x38, PIT_MODE);
+               pit_disable_clocksource();
                break;
 
        case CLOCK_EVT_MODE_RESUME:
        .shift  = 20,
 };
 
+static void pit_disable_clocksource(void)
+{
+       /*
+        * Use mult to check whether it is registered or not
+        */
+       if (clocksource_pit.mult) {
+               clocksource_unregister(&clocksource_pit);
+               clocksource_pit.mult = 0;
+       }
+}
+
 static int __init init_pit_clocksource(void)
 {
         /*