// If the guest is supposed to run slower than the host, yield out until
 // the host time is appropriately far along;
-int v3_adjust_time(struct guest_info * info)
-{
+int v3_adjust_time(struct guest_info * info) {
     struct vm_time * time_state = &(info->time_state);
-    uint64_t guest_time, host_time, target_host_time;
-    guest_time = v3_get_guest_time(time_state);
-    host_time = v3_get_host_time(time_state);
-    target_host_time = (host_time - time_state->initial_time) *
-       time_state->host_cpu_freq / time_state->guest_cpu_freq;
-
-    while (host_time < target_host_time) {
-       v3_yield(info);
+    if (time_state->host_cpu_freq == time_state->guest_cpu_freq) {
+       time_state->guest_host_offset = 0;
+    } else {
+       uint64_t guest_time, host_time, target_host_time;
+       guest_time = v3_get_guest_time(time_state);
        host_time = v3_get_host_time(time_state);
+       target_host_time = (host_time - time_state->initial_time) *
+           time_state->host_cpu_freq / time_state->guest_cpu_freq;
+       while (host_time < target_host_time) {
+           v3_yield(info);
+           host_time = v3_get_host_time(time_state);
+       }
+       time_state->guest_host_offset = guest_time - host_time;
+
     }
-    time_state->guest_host_offset = guest_time - host_time;
     return 0;
 }
 
     return 0;
 }
 
-
 int v3_remove_timer(struct guest_info * info, struct vm_timer * timer) {
     list_del(&(timer->timer_link));
     info->time_state.num_timers--;
     }
 }
 
-
 /* 
  * Handle full virtualization of the time stamp counter.  As noted
  * above, we don't store the actual value of the TSC, only the guest's
 
     vmx_state->pri_proc_ctrls.invlpg_exit = 1;
     vmx_state->pri_proc_ctrls.use_msr_bitmap = 1;
     vmx_state->pri_proc_ctrls.pause_exit = 1;
-#ifdef CONFIG_TIME_VIRTUALIZE_TSC
     vmx_state->pri_proc_ctrls.tsc_offset = 1;
+#ifdef CONFIG_TIME_VIRTUALIZE_TSC
     vmx_state->pri_proc_ctrls.rdtsc_exit = 1;
 #endif