[libvirt] [PATCH] qemu: hyperv: Add enlightenment support for TSC timekeeping

Peter Krempa pkrempa at redhat.com
Tue Feb 4 15:04:06 UTC 2014


[adding Vadim as he implemented the qemu/kvm parts]

On 01/22/14 11:35, Daniel P. Berrange wrote:
> On Tue, Jan 21, 2014 at 06:54:34PM +0100, Peter Krempa wrote:
>> The hyperv enlightenment features allow to ease guests timekeeping by
>> allowing to store offset from the TSC as a reference. Add the support
>> for enabling this flag in qemu.
> 
> I'm not sure I entirely understand what this is doing with TSC, but
> we do have a generic  <timer> element for controlling various attributes
> of platform timers. I can't help thinking it'd be better to keep this
> TSC related setting there instead

This functionality provides hypercalls defined by the Microsoft's
"enlightenment" standards. These provide calibration data and actual
values that can be used by the guest to calculate time. [1]

The actual implementation uses data provided by the kvmclock code:

+	case HV_X64_MSR_TIME_REF_COUNT: {
+		data =
+		     div_u64(get_kernel_ns() + kvm->arch.kvmclock_offset, 100);
+		break;
+	}

along with a few values that will allow the guest to use the data.

Technically this is a new timer for VM's running windows and as with
kvmclock, cpu features are used to show the availability of this feature
to the guest.

There is yet another "enlightenment" option for windows guests that run
on platforms that support the invariant TSC (iTSC). This option will add
hypercall to retrieve calibration data so that the host processors iTSC
will be used as the timing source eliminating the need to read the timer
value via a hypercall.

I agree on your idea of moving this option into the <timer> section. How
about naming it <timer name="hv-rtc"> ?

> 
> Daniel
> 

Peter

[1]:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff542637(v=vs.85).aspx

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 901 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140204/78b14241/attachment-0001.sig>


More information about the libvir-list mailing list