|
From: | Gavin Shan |
Subject: | Re: [PATCH RFCv1 4/8] kvm: Introduce secondary dirty bitmap |
Date: | Thu, 9 Feb 2023 20:42:36 +1100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 |
On 2/9/23 9:07 AM, Juan Quintela wrote:
Gavin Shan <gshan@redhat.com> wrote:When dirty ring is enabled on ARM64, the backup bitmap may be used to track the dirty pages in no-running-vcpu situations. The original bitmap is the primary one, used for the dirty ring buffer. We need the secondary bitmap to collect the backup bitmap for ARM64. No functional change intended. Signed-off-by: Gavin Shan <gshan@redhat.com> --- accel/kvm/kvm-all.c | 50 ++++++++++++++++++++++++++++++---------- include/sysemu/kvm_int.h | 1 + 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 01a6a026af..1a93985574 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -553,13 +553,29 @@ static void kvm_log_stop(MemoryListener *listener, } }+static unsigned long *kvm_slot_dirty_bitmap(KVMSlot *slot, bool primary)+{ + if (primary) { + return slot->dirty_bmap; + } + + return slot->dirty_bmap + + slot->dirty_bmap_size / sizeof(slot->dirty_bmap[0]); +}Why? Just use two bitmaps and call it a day.
Thanks for your review, Juan. Right, I had wrong assumption that the original (primary) bitmap can't be reused. It's why the secondary bitmap is introduced. The intention is to use the original (primary) bitmap to cover the dirty-ring buffers while the secondary bitmap is to cover the backup bitmap, resident in host kernel. I think the original (primary) bitmap can be reused in this case. After the dirty-ring buffer is synchronized to the original bitmap, which is updated to the dirty bits. It can be reused to cover the backup bitmap. I will remove the secondary bitmap in next revision. Thanks, Gavin
[Prev in Thread] | Current Thread | [Next in Thread] |