[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/68] kvm: Synchronize the backup bitmap in the last stage
|
From: |
Paolo Bonzini |
|
Subject: |
[PULL 11/68] kvm: Synchronize the backup bitmap in the last stage |
|
Date: |
Wed, 17 May 2023 19:44:23 +0200 |
From: Gavin Shan <gshan@redhat.com>
In the last stage of live migration or memory slot removal, the
backup bitmap needs to be synchronized when it has been enabled.
Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Tested-by: Zhenyu Zhang <zhenyzha@redhat.com>
Message-Id: <20230509022122.20888-3-gshan@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
accel/kvm/kvm-all.c | 11 +++++++++++
include/sysemu/kvm_int.h | 1 +
2 files changed, 12 insertions(+)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 870abad82681..c3aaabf304d7 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -1361,6 +1361,10 @@ static void kvm_set_phys_mem(KVMMemoryListener *kml,
*/
if (kvm_state->kvm_dirty_ring_size) {
kvm_dirty_ring_reap_locked(kvm_state, NULL);
+ if (kvm_state->kvm_dirty_ring_with_bitmap) {
+ kvm_slot_sync_dirty_pages(mem);
+ kvm_slot_get_dirty_log(kvm_state, mem);
+ }
} else {
kvm_slot_get_dirty_log(kvm_state, mem);
}
@@ -1582,6 +1586,12 @@ static void kvm_log_sync_global(MemoryListener *l, bool
last_stage)
mem = &kml->slots[i];
if (mem->memory_size && mem->flags & KVM_MEM_LOG_DIRTY_PAGES) {
kvm_slot_sync_dirty_pages(mem);
+
+ if (s->kvm_dirty_ring_with_bitmap && last_stage &&
+ kvm_slot_get_dirty_log(s, mem)) {
+ kvm_slot_sync_dirty_pages(mem);
+ }
+
/*
* This is not needed by KVM_GET_DIRTY_LOG because the
* ioctl will unconditionally overwrite the whole region.
@@ -3710,6 +3720,7 @@ static void kvm_accel_instance_init(Object *obj)
s->kernel_irqchip_split = ON_OFF_AUTO_AUTO;
/* KVM dirty ring is by default off */
s->kvm_dirty_ring_size = 0;
+ s->kvm_dirty_ring_with_bitmap = false;
s->notify_vmexit = NOTIFY_VMEXIT_OPTION_RUN;
s->notify_window = 0;
s->xen_version = 0;
diff --git a/include/sysemu/kvm_int.h b/include/sysemu/kvm_int.h
index a641c974ea54..511b42bde5c4 100644
--- a/include/sysemu/kvm_int.h
+++ b/include/sysemu/kvm_int.h
@@ -115,6 +115,7 @@ struct KVMState
} *as;
uint64_t kvm_dirty_ring_bytes; /* Size of the per-vcpu dirty ring */
uint32_t kvm_dirty_ring_size; /* Number of dirty GFNs per ring */
+ bool kvm_dirty_ring_with_bitmap;
struct KVMDirtyRingReaper reaper;
NotifyVmexitOption notify_vmexit;
uint32_t notify_window;
--
2.40.1
- [PULL 00/68] i386, build system, KVM changes for 2023-05-18, Paolo Bonzini, 2023/05/17
- [PULL 03/68] target/i386: fix operand size for VCOMI/VUCOMI instructions, Paolo Bonzini, 2023/05/17
- [PULL 05/68] tests/tcg/i386: correct mask for VPERM2F128/VPERM2I128, Paolo Bonzini, 2023/05/17
- [PULL 01/68] target/i386: add support for FLUSH_L1D feature, Paolo Bonzini, 2023/05/17
- [PULL 02/68] target/i386: add support for FB_CLEAR feature, Paolo Bonzini, 2023/05/17
- [PULL 06/68] target/i386: Fix and add some comments next to SSE/AVX instructions., Paolo Bonzini, 2023/05/17
- [PULL 08/68] target/i386: Fix exception classes for MOVNTPS/MOVNTPD., Paolo Bonzini, 2023/05/17
- [PULL 09/68] meson: Pass -j option to sphinx, Paolo Bonzini, 2023/05/17
- [PULL 04/68] target/i386: fix avx2 instructions vzeroall and vpermdq, Paolo Bonzini, 2023/05/17
- [PULL 07/68] target/i386: Fix exception classes for SSE/AVX instructions., Paolo Bonzini, 2023/05/17
- [PULL 11/68] kvm: Synchronize the backup bitmap in the last stage,
Paolo Bonzini <=
- [PULL 10/68] migration: Add last stage indicator to global dirty log, Paolo Bonzini, 2023/05/17
- [PULL 12/68] kvm: Add helper kvm_dirty_ring_init(), Paolo Bonzini, 2023/05/17
- [PULL 13/68] kvm: Enable dirty ring for arm64, Paolo Bonzini, 2023/05/17
- [PULL 16/68] scsi-generic: fix buffer overflow on block limits inquiry, Paolo Bonzini, 2023/05/17
- [PULL 14/68] tcg: round-robin: do not use mb_read for rr_current_cpu, Paolo Bonzini, 2023/05/17
- [PULL 17/68] make: clean after distclean deletes source files, Paolo Bonzini, 2023/05/17
- [PULL 18/68] python: shut up "pip install" during "make check-minreqs", Paolo Bonzini, 2023/05/17
- [PULL 15/68] coverity: the definitive COMPONENTS.md update, Paolo Bonzini, 2023/05/17
- [PULL 20/68] python: add mkvenv.py, Paolo Bonzini, 2023/05/17
- [PULL 28/68] mkvenv: work around broken pip installations on Debian 10, Paolo Bonzini, 2023/05/17