s64 delta, delta_cpu, stolen, blocked;
u64 sched_time;
unsigned int i, cpu = smp_processor_id();
+ int schedule_clock_was_set_work = 0;
struct shadow_time_info *shadow = &per_cpu(shadow_time, cpu);
struct vcpu_runstate_info *runstate = &per_cpu(runstate, cpu);
if (shadow_tv_version != HYPERVISOR_shared_info->wc_version) {
update_wallclock();
- if (keventd_up())
- schedule_work(&clock_was_set_work);
+ schedule_clock_was_set_work = 1;
}
write_sequnlock(&xtime_lock);
+ if (schedule_clock_was_set_work && keventd_up())
+ schedule_work(&clock_was_set_work);
+
/*
* Account stolen ticks.
* HACK: Passing NULL to account_steal_time()