RE: [PATCH] KVM: emulate lapic tsc deadline timer for hvm

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Marcelo Tosatti wrote:
>>> --- a/arch/x86/include/asm/msr-index.h
>>> +++ b/arch/x86/include/asm/msr-index.h
>>> @@ -229,6 +229,8 @@
>>>  #define MSR_IA32_APICBASE_ENABLE	(1<<11)
>>>  #define MSR_IA32_APICBASE_BASE		(0xfffff<<12)
>>> 
>>> +#define MSR_IA32_TSCDEADLINE		0x000006e0
>>> +
>>>  #define MSR_IA32_UCODE_WRITE		0x00000079
>>>  #define MSR_IA32_UCODE_REV		0x0000008b
>> 
>> Need to add to msrs_to_save so live migration works.
> 
> MSR must be explicitly listed in qemu, also.
> 

OK

>>> +		if (!apic->lapic_timer.tscdeadline)
>>> +			return;
>>> +
>>> +		tsc_target = kvm_x86_ops->
>>> +			guest_to_host_tsc(apic->lapic_timer.tscdeadline);
>>> +		rdtscll(tsc_now); +		tsc_delta = tsc_target - tsc_now;
>> 
>> This only works if we have a constant tsc, that's not true for large
>> multiboard machines.  Need to do this with irqs disabled as well
>> (reading both 'now' and 'tsc_now' in the same critical section).
> 
> Should look like this:
> 
> local_irq_disable();
> u64 guest_tsc = kvm_x86_ops->read_l1_tsc(vcpu);
> if (guest_tsc <= tscdeadline)
>         hrtimer_start(now);
> else {
> 	ns = convert_to_ns(guest_tsc - tscdeadline);
> 	hrtimer_start(now + ns);
> }
> local_irq_enable();
> 
> Note the vcpus tsc can have different frequency than the hosts, so
> vcpu_tsc_khz() should be used to convert to nanoseconds, not tsc_khz.
> 

Fine.


Thanks,
Jinsong--
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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux