Merge branch 'consolidate-clksrc-i8253' of master.kernel.org:~rmk/linux-2.6-arm into...
[pandora-kernel.git] / arch / ia64 / kernel / time.c
index 9702fa9..04440cc 100644 (file)
@@ -73,8 +73,6 @@ static struct clocksource clocksource_itc = {
        .rating         = 350,
        .read           = itc_get_cycles,
        .mask           = CLOCKSOURCE_MASK(64),
-       .mult           = 0, /*to be calculated*/
-       .shift          = 16,
        .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
 #ifdef CONFIG_PARAVIRT
        .resume         = paravirt_clocksource_resume,
@@ -190,19 +188,10 @@ timer_interrupt (int irq, void *dev_id)
 
                new_itm += local_cpu_data->itm_delta;
 
-               if (smp_processor_id() == time_keeper_id) {
-                       /*
-                        * Here we are in the timer irq handler. We have irqs locally
-                        * disabled, but we don't know if the timer_bh is running on
-                        * another CPU. We need to avoid to SMP race by acquiring the
-                        * xtime_lock.
-                        */
-                       write_seqlock(&xtime_lock);
-                       do_timer(1);
-                       local_cpu_data->itm_next = new_itm;
-                       write_sequnlock(&xtime_lock);
-               } else
-                       local_cpu_data->itm_next = new_itm;
+               if (smp_processor_id() == time_keeper_id)
+                       xtime_update(1);
+
+               local_cpu_data->itm_next = new_itm;
 
                if (time_after(new_itm, ia64_get_itc()))
                        break;
@@ -222,7 +211,7 @@ skip_process_time_accounting:
                 * comfort, we increase the safety margin by
                 * intentionally dropping the next tick(s).  We do NOT
                 * update itm.next because that would force us to call
-                * do_timer() which in turn would let our clock run
+                * xtime_update() which in turn would let our clock run
                 * too fast (with the potentially devastating effect
                 * of losing monotony of time).
                 */
@@ -374,11 +363,8 @@ ia64_init_itm (void)
        ia64_cpu_local_tick();
 
        if (!itc_clocksource) {
-               /* Sort out mult/shift values: */
-               clocksource_itc.mult =
-                       clocksource_hz2mult(local_cpu_data->itc_freq,
-                                               clocksource_itc.shift);
-               clocksource_register(&clocksource_itc);
+               clocksource_register_hz(&clocksource_itc,
+                                               local_cpu_data->itc_freq);
                itc_clocksource = &clocksource_itc;
        }
 }