aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaliy Gusev <gusev.vitaliy@gmail.com>2023-02-28 11:16:35 +0000
committerCorvin Köhne <corvink@FreeBSD.org>2023-02-28 12:37:44 +0000
commit281b496f22d1d666b2ef1e54985432627ec434a4 (patch)
treeff51532daa3971a71f9f1afceeda649f9bdd2c4a
parent34f804e547e7c3b10b12f5450ff2e0a771000daf (diff)
downloadsrc-281b496f22d1d666b2ef1e54985432627ec434a4.tar.gz
src-281b496f22d1d666b2ef1e54985432627ec434a4.zip
vmm: fix restore of TSC offset
After suspend/resume Ubuntu 20.04 and 22.04 installer can hang if tsc-early clocksource has a big skew. Reviewed by: corvink, jhb Fixes: a7db532e3a6f83067b342f569b56076d011f8a1e ("vmm: Simplify saving of absolute TSC values in snapshots.") MFC after: 2 weeks Sponsored by: vStack Differential Revision: https://reviews.freebsd.org/D38474
-rw-r--r--sys/amd64/vmm/vmm.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/amd64/vmm/vmm.c b/sys/amd64/vmm/vmm.c
index 9f5fc124f4ff..794ec5ab6597 100644
--- a/sys/amd64/vmm/vmm.c
+++ b/sys/amd64/vmm/vmm.c
@@ -2859,6 +2859,8 @@ vm_snapshot_vcpus(struct vm *vm, struct vm_snapshot_meta *meta)
*/
tsc = now + vcpu->tsc_offset;
SNAPSHOT_VAR_OR_LEAVE(tsc, meta, ret, done);
+ if (meta->op == VM_SNAPSHOT_RESTORE)
+ vcpu->tsc_offset = tsc;
}
done: