[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3] x86/vtsc: update vcpu_time in hvm_set_guest_time
On 05/06/13 13:02, Diana Crisan wrote: On 04/06/13 16:32, Roger Pau Monne wrote:When using a vtsc, hvm_set_guest_time changes hvm_vcpu.stime_offset, which is used in the vcpu time structure to calculate the tsc_timestamp, so after updating stime_offset we need to propagate the change to vcpu_time in order for the guest to get the right time if using the PV clock. Signed-off-by: Roger Pau Monnà <roger.pau@xxxxxxxxxx> Cc: Keir Fraser <keir@xxxxxxx> Cc: Jan Beulich <jbeulich@xxxxxxxx> Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>Tested-By: Diana Crisan <dcrisan@xxxxxxxxxxxx>--- Changes since v2: * Check for v == current instead of v->is_running to know if the vcpu is running. Changes since v1: * Perform the call to update_vcpu_system_time in hvm_set_guest_time if the offset has changed and the vCPU is running. --- xen/arch/x86/hvm/vpt.c | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletions(-) diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c index 8dee662..4b1e1a3 100644 --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -57,7 +57,18 @@ u64 hvm_get_guest_time(struct vcpu *v) void hvm_set_guest_time(struct vcpu *v, u64 guest_time) {- v->arch.hvm_vcpu.stime_offset += guest_time - hvm_get_guest_time(v);+ u64 offset = guest_time - hvm_get_guest_time(v); + + if ( offset ) { + v->arch.hvm_vcpu.stime_offset += offset; + /* + * If hvm_vcpu.stime_offset is updated make sure to + * also update vcpu time, since this value is used to + * calculate the TSC. + */ + if ( v == current ) + update_vcpu_system_time(v); + } }static int pt_irq_vector(struct periodic_time *pt, enum hvm_intsrc src)I have tested this patch and I have not been able to reproduce the guest stuck-clock problem we were seeing before (see *HVM Migration of domU on Qemu-upstream DM causes stuck system clock with ACPI* for details of the problem). Note: this was tested without the temporary fix to our problem ( which is specifying tsc_mode='native_paravirt'). Great, thanks Diana. -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |