2016-04-06 13:51+0000, Avi Cohen: >> 2016-04-05 15:07+0000, Avi Cohen: >> > What do you think about this simple solution: >> > Currently the KVM updates the system-time in the structure >> > pvclock_vcpu_time_info in the guest memory with the MONOTONIC time >> struct pvclock_vcpu_time_info { >> > u32 version; >> > u32 pad0; >> > u64 tsc_timestamp; >> > u64 system_time; >> > u32 tsc_to_system_mul; >> > s8 tsc_shift; >> > u8 flags; >> > u8 pad[2]; >> > } __attribute__((__packed__)); >> > >> > This is the default kvm-clcok. >> > I think to add another clock source named - kvm-clock-realtime, and to update >> system_time with host's REAL_TIME clock. >> > What is your opinion ? >> >> Would you be ok with a wall_time entry in pvclock_vcpu_time_info that would >> tell the host real time at system_time? >> struct pvclock_wall_clock should say the host real time when system_time was >> 0, so it's the same. wallclock = CLOCK_REALTIME, most likely. >> >> Creating a new clock would allow us to get rid of many other problems, but your >> goal might be achievable with existing interfaces. >> > > Yes - it will be ok to update the pvclock_wall_clock with the host CLOCK_REALTIME. > But I think I also need the guest's TSC at that time of update, > struct pvclock_wall_clock { > 37 u32 version; > 38 u32 sec; > 39 u32 nsec; > New field tsc_timestamp; > New field tsc_to_system_mul; > 40 } __attribute__((__packed__)); > > Now the guest - when need to read the current time - can do something like this : > Current_time = sec * sec_to_nano + nsec + (rdtdc () - tsc_timestamp) * tsc_to_system_mul No need. pvclock_wall_clock.{sec,nsec} is synchronized with system_time and system_time is synchronized with TSC. To get the current real time, you just add times from pvclock_vcpu_time_info, pvclock_wall_clock and TSC, like kvm_get_wallclock() does. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html