基于qemu-kvm-0.12.5和kvm-kmod-2.6.32做虛擬機的熱快照。我用-smp 2 引數創建2個vcpu的虛擬機進行快照,回滾時出現錯誤。創建1個vcpu的虛擬機快斬訓滾都沒有問題。初步的原因是:再用cpu_physical_memory_set_dirty_tracking(1)對記憶體頁寫保護時呼叫了mmu.c中的kvm_gpa_set_protect函式,該函式如下:
int kvm_gpa_set_protect(struct kvm *kvm, uint64_t gpa)
{
int ret = 0;
//TODO How about mutil-vcpu.
struct kvm_vcpu *vcpu;
int i;
for (i = 0; i < KVM_MAX_VCPUS; ++i) {
vcpu = kvm->vcpus[i];
/*
* As the Guest is not running at this moment,
* we need to load the kvm_mmu actively.
*/
//kvm_mmu_load(vcpu);
if (vcpu) {
break;
}
else
continue;
}
if (tdp_enabled) {
ret = kvm_gpa_set_protect_tdp_spte(vcpu, gpa);
printk("**********%s, ret = %d \n", __func__, ret);
if (ret)
return ret;
} else {
printk("********** ept disabled! \n");
}
return ret;
}
該函式只支持一個vcpu。
不知哪位大俠能幫忙給點建議,怎樣修改使他支持多個vcpu。本人知識淺薄,不知從何下手。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/95761.html
標籤:虛擬化
