|
@@ -1170,8 +1170,10 @@ static int emulator_write_phys(struct kvm_vcpu *vcpu, gpa_t gpa,
|
|
|
return 0;
|
|
|
mark_page_dirty(vcpu->kvm, gpa >> PAGE_SHIFT);
|
|
|
virt = kmap_atomic(page, KM_USER0);
|
|
|
- kvm_mmu_pte_write(vcpu, gpa, virt + offset, val, bytes);
|
|
|
- memcpy(virt + offset_in_page(gpa), val, bytes);
|
|
|
+ if (memcmp(virt + offset_in_page(gpa), val, bytes)) {
|
|
|
+ kvm_mmu_pte_write(vcpu, gpa, virt + offset, val, bytes);
|
|
|
+ memcpy(virt + offset_in_page(gpa), val, bytes);
|
|
|
+ }
|
|
|
kunmap_atomic(virt, KM_USER0);
|
|
|
return 1;
|
|
|
}
|