KVM: Add missing calls to mark_page_dirty()

A few places where we modify guest memory fail to call mark_page_dirty(),
causing live migration to fail. This adds the missing calls.

Signed-off-by: Uri Lublin <uril@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>

authored by Uri Lublin and committed by Avi Kivity ab51a434 f7e6a45a

+6
+6
drivers/kvm/kvm_main.c
··· 228 228 unsigned now; 229 229 unsigned offset; 230 230 hva_t guest_buf; 231 + gfn_t gfn; 231 232 232 233 paddr = gva_to_hpa(vcpu, addr); 233 234 234 235 if (is_error_hpa(paddr)) 235 236 break; 236 237 238 + gfn = vcpu->mmu.gva_to_gpa(vcpu, addr) >> PAGE_SHIFT; 239 + mark_page_dirty(vcpu->kvm, gfn); 237 240 guest_buf = (hva_t)kmap_atomic( 238 241 pfn_to_page(paddr >> PAGE_SHIFT), KM_USER0); 239 242 offset = addr & ~PAGE_MASK; ··· 956 953 return 0; 957 954 page = gfn_to_page(m, gpa >> PAGE_SHIFT); 958 955 kvm_mmu_pre_write(vcpu, gpa, bytes); 956 + mark_page_dirty(vcpu->kvm, gpa >> PAGE_SHIFT); 959 957 virt = kmap_atomic(page, KM_USER0); 960 958 memcpy(virt + offset_in_page(gpa), &val, bytes); 961 959 kunmap_atomic(virt, KM_USER0); ··· 1298 1294 if (is_error_hpa(para_state_hpa)) 1299 1295 goto err_gp; 1300 1296 1297 + mark_page_dirty(vcpu->kvm, para_state_gpa >> PAGE_SHIFT); 1301 1298 para_state_page = pfn_to_page(para_state_hpa >> PAGE_SHIFT); 1302 1299 para_state = kmap_atomic(para_state_page, KM_USER0); 1303 1300 ··· 1328 1323 vcpu->para_state_gpa = para_state_gpa; 1329 1324 vcpu->hypercall_gpa = hypercall_gpa; 1330 1325 1326 + mark_page_dirty(vcpu->kvm, hypercall_gpa >> PAGE_SHIFT); 1331 1327 hypercall = kmap_atomic(pfn_to_page(hypercall_hpa >> PAGE_SHIFT), 1332 1328 KM_USER1) + (hypercall_hpa & ~PAGE_MASK); 1333 1329 kvm_arch_ops->patch_hypercall(vcpu, hypercall);