[PATCH] vmi: fix nohz compile
authorZachary Amsden <zach@vmware.com>
Mon, 5 Mar 2007 08:30:41 +0000 (00:30 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Mon, 5 Mar 2007 15:57:52 +0000 (07:57 -0800)
More goo from hrtimers integration.  We do compile and run properly with NO_HZ
enabled.  There was a period when we didn't because of a missing export, but
that was since fixed.

And with the clocksource code now firmly in place, we can get rid of code that
fixes up the wallclock, since this is done in the common infrastructure.  This
actually fixes a timer bug as well, that was caused by do_settimeofday no
longer being callable with interrupts disabled due to the use of
on_each_cpu().

Signed-off-by: Zachary Amsden <zach@vmware.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/i386/Kconfig
arch/i386/kernel/vmi.c
arch/i386/kernel/vmitime.c

index 2f7672545fe98ae0096d0249fefcf250dbdab5df..e970887b9e696b62f1ff8b8044bf7709e3a7a06b 100644 (file)
@@ -220,7 +220,7 @@ config PARAVIRT
 
 config VMI
        bool "VMI Paravirt-ops support"
-       depends on PARAVIRT && !NO_HZ
+       depends on PARAVIRT
        default y
        help
          VMI provides a paravirtualized interface to multiple hypervisors
index a8aa57e770296b0023da4f898901c788ba6e84aa..30e8253e6eefec7b85dfb993189d3af145871bcd 100644 (file)
@@ -934,6 +934,7 @@ void __init vmi_init(void)
 #ifdef CONFIG_X86_IO_APIC
        no_timer_check = 1;
 #endif
+       no_sync_cmos_clock = 1;
 
        local_irq_restore(flags & X86_EFLAGS_IF);
 }
index 4bb218e2eb14a545cbee2432486a2a4533d0fa4f..d21779749838689e7eb4971d83474f8a5fe8f9aa 100644 (file)
@@ -153,13 +153,6 @@ static void vmi_get_wallclock_ts(struct timespec *ts)
        ts->tv_sec = wallclock;
 }
 
-static void update_xtime_from_wallclock(void)
-{
-       struct timespec ts;
-       vmi_get_wallclock_ts(&ts);
-       do_settimeofday(&ts);
-}
-
 unsigned long vmi_get_wallclock(void)
 {
        struct timespec ts;
@@ -197,18 +190,10 @@ void __init vmi_time_init(void)
        set_intr_gate(LOCAL_TIMER_VECTOR, apic_vmi_timer_interrupt);
 #endif
 
-       no_sync_cmos_clock = 1;
-
-       vmi_get_wallclock_ts(&xtime);
-       set_normalized_timespec(&wall_to_monotonic,
-               -xtime.tv_sec, -xtime.tv_nsec);
-
        real_cycles_accounted_system = read_real_cycles();
-       update_xtime_from_wallclock();
        per_cpu(process_times_cycles_accounted_cpu, 0) = read_available_cycles();
 
        cycles_per_sec = vmi_timer_ops.get_cycle_frequency();
-
        cycles_per_jiffy = cycles_per_sec;
        (void)do_div(cycles_per_jiffy, HZ);
        cycles_per_alarm = cycles_per_sec;