vmm svm: Mark all VMCB state caches dirty on vCPU restore.

Mark Johnston noticed that this was missing VMCB_CACHE_LBR.  Just set
all the bits as is done in svm_run() rather than trying to clear
individual bits.

Reported by:	markj
Reviewed by:	corvink, markj
Differential Revision:	https://reviews.freebsd.org/D37259
This commit is contained in:
John Baldwin 2022-11-18 09:58:22 -08:00
parent 0f00260c67
commit 19b9dd2e08

View file

@ -2478,17 +2478,8 @@ svm_snapshot(void *arg, struct vm_snapshot_meta *meta)
SNAPSHOT_VAR_OR_LEAVE(vcpu->asid.num, meta, ret, done);
/* Set all caches dirty */
if (meta->op == VM_SNAPSHOT_RESTORE) {
svm_set_dirty(sc, i, VMCB_CACHE_ASID);
svm_set_dirty(sc, i, VMCB_CACHE_IOPM);
svm_set_dirty(sc, i, VMCB_CACHE_I);
svm_set_dirty(sc, i, VMCB_CACHE_TPR);
svm_set_dirty(sc, i, VMCB_CACHE_CR2);
svm_set_dirty(sc, i, VMCB_CACHE_CR);
svm_set_dirty(sc, i, VMCB_CACHE_DT);
svm_set_dirty(sc, i, VMCB_CACHE_SEG);
svm_set_dirty(sc, i, VMCB_CACHE_NP);
}
if (meta->op == VM_SNAPSHOT_RESTORE)
svm_set_dirty(sc, i, 0xffffffff);
}
if (meta->op == VM_SNAPSHOT_RESTORE)