On 18/01/2017 15:50, Marcelo Tosatti wrote:
>> Interesting idea!  For this to work, KVM needs to implement
>> getcrosstimestamp and ptp_chardev.c can then add an alternative
>> implementation of PTP_SYS_OFFSET, based on precise cross timestamps.
>>
>> Something like
>>
>>                 for (i = 0; i <= sysoff->n_samples; i++) {
>>                      // ... call getcrosststamp ...
>>                      sysns = ktime_to_ns(xtstamp.sys_realtime);
>>                      if (i > 0) {
>>                              devns = ktime_to_ns(xtstamp.device);
>>                              devns -= (sysns - prev_sysns) / 2;
>>                              devts = ns_to_timespec(devns);
>>                              pct->sec = devts.tv_sec;
>>                              pct->nsec = devts.tv_nsec;
>>                              pct++;
>>                      }
>>                      systs = ns_to_timespec(sysns);
>>                         pct->sec = ts.tv_sec;
>>                         pct->nsec = ts.tv_nsec;
>>                         pct++;
>>                      prev_sysns = sysns;
>>                 }
>>
>> Marcelo, can you give it a try?
> 
> Can convert fine, but problem is the simultaneous read
> of host and guest clocks.

Could the TSC from the hypercall be applied to kvmclock to do this?  My
understanding is that get_device_system_crosststamp (which is used in
the sole in-tree implementation of getcrosststamp) already contains all
the logic to do that.

Paolo

Reply via email to