Commit a9eddc95 authored by Zachary Amsden's avatar Zachary Amsden Committed by Linus Torvalds
Browse files

[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: default avatarZachary Amsden <zach@vmware.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent e30fab3a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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);
}
+0 −15
Original line number Diff line number Diff line
@@ -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;