summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Amsden <zach@vmware.com>2007-03-05 00:30:41 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-03-05 07:57:52 -0800
commita9eddc952870d29aa9df96ab862327eb6afa23d9 (patch)
treea878f8579ec8230f1bb627e0d9603b2f0d05271f
parente30fab3ad34aa8bfb55c9f0337d4a92a0595f41f (diff)
downloadkernel-crypto-a9eddc952870d29aa9df96ab862327eb6afa23d9.tar.gz
kernel-crypto-a9eddc952870d29aa9df96ab862327eb6afa23d9.tar.xz
kernel-crypto-a9eddc952870d29aa9df96ab862327eb6afa23d9.zip
[PATCH] vmi: fix nohz compile
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>
-rw-r--r--arch/i386/Kconfig2
-rw-r--r--arch/i386/kernel/vmi.c1
-rw-r--r--arch/i386/kernel/vmitime.c15
3 files changed, 2 insertions, 16 deletions
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index 2f7672545fe..e970887b9e6 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -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
diff --git a/arch/i386/kernel/vmi.c b/arch/i386/kernel/vmi.c
index a8aa57e7702..30e8253e6ee 100644
--- a/arch/i386/kernel/vmi.c
+++ b/arch/i386/kernel/vmi.c
@@ -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);
}
diff --git a/arch/i386/kernel/vmitime.c b/arch/i386/kernel/vmitime.c
index 4bb218e2eb1..d2177974983 100644
--- a/arch/i386/kernel/vmitime.c
+++ b/arch/i386/kernel/vmitime.c
@@ -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;