[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFCv1 5/8] kvm: Synchronize secondary bitmap in last stage
From: |
Gavin Shan |
Subject: |
[PATCH RFCv1 5/8] kvm: Synchronize secondary bitmap in last stage |
Date: |
Mon, 6 Feb 2023 19:20:07 +0800 |
In the last stage of live migration or memory slot removal, the
backup bitmap needs to be synchronized.
Signed-off-by: Gavin Shan <gshan@redhat.com>
---
accel/kvm/kvm-all.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 1a93985574..9ec117c441 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1377,10 +1377,12 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
*/
if (kvm_state->kvm_dirty_ring_size) {
kvm_dirty_ring_reap_locked(kvm_state, NULL);
+ kvm_slot_get_dirty_log(kvm_state, mem, false);
} else {
kvm_slot_get_dirty_log(kvm_state, mem, true);
}
kvm_slot_sync_dirty_pages(mem, true);
+ kvm_slot_sync_dirty_pages(mem, false);
}
/* unregister the slot */
@@ -1604,6 +1606,11 @@ static void kvm_log_sync_global(MemoryListener *l, bool
last_stage)
* However kvm dirty ring has no such side effect.
*/
kvm_slot_reset_dirty_pages(mem);
+
+ if (s->kvm_dirty_ring_with_bitmap && last_stage &&
+ kvm_slot_get_dirty_log(s, mem, false)) {
+ kvm_slot_sync_dirty_pages(mem, false);
+ }
}
}
kvm_slots_unlock();
--
2.23.0
- Re: [PATCH RFCv1 2/8] memory: Add last stage indicator to global dirty log synchronization, (continued)
- [PATCH RFCv1 3/8] migration: Add last stage indicator to global dirty log synchronization, Gavin Shan, 2023/02/06
- [PATCH RFCv1 4/8] kvm: Introduce secondary dirty bitmap, Gavin Shan, 2023/02/06
- [PATCH RFCv1 8/8] kvm: Enable dirty ring for arm64, Gavin Shan, 2023/02/06
- [PATCH RFCv1 6/8] kvm: Add helper kvm_dirty_ring_init(), Gavin Shan, 2023/02/06
- [PATCH RFCv1 5/8] kvm: Synchronize secondary bitmap in last stage,
Gavin Shan <=
- [PATCH RFCv1 7/8] hw/arm/virt: Enable backup bitmap for dirty ring, Gavin Shan, 2023/02/06