mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
x86: don't pass negative time to gtime_to_gtsc()
scale_delta(), which is being called by that function, doesn't cope with that. Also print a warning message, so hopefully we can eventually figure why occasionally a negative value results from the calculation in the first place. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
d1efb7702b
commit
eb60be3dd8
1 file changed
+9
@@ -854,7 +854,16 @@ static void __update_vcpu_system_time(struct vcpu *v, int force)
|
||||
if ( is_hvm_domain(d) )
|
||||
{
|
||||
struct pl_time *pl = &v->domain->arch.hvm_domain.pl_time;
|
||||
|
||||
stime += pl->stime_offset + v->arch.hvm_vcpu.stime_offset;
|
||||
if ( (s64)stime < 0 )
|
||||
{
|
||||
printk(XENLOG_G_WARNING "d%dv%d: bogus time %" PRId64
|
||||
" (offsets %" PRId64 "/%" PRId64 ")\n",
|
||||
d->domain_id, v->vcpu_id, stime,
|
||||
pl->stime_offset, v->arch.hvm_vcpu.stime_offset);
|
||||
stime = 0;
|
||||
}
|
||||
}
|
||||
tsc_stamp = gtime_to_gtsc(d, stime);
|
||||
}
|
||||
|
||||