[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFCv1 0/8] hw/arm/virt: Support dirty ring
From: |
Gavin Shan |
Subject: |
[PATCH RFCv1 0/8] hw/arm/virt: Support dirty ring |
Date: |
Mon, 6 Feb 2023 19:20:02 +0800 |
This series intends to support dirty ring for live migration. The dirty
ring use discrete buffer to track dirty pages. For ARM64, the speciality
is to use backup bitmap to track dirty pages when there is no-running-vcpu
context. It's known that the backup bitmap needs to be synchronized when
KVM device "kvm-arm-gicv3" or "arm-its-kvm" has been enabled. The backup
bitmap is collected in the last stage of migration.
PATCH[1] Synchronize linux-headers for dirty ring
PATCH[2-3] Introduce indicator of the last stage migration and pass it
all the way down
PATCH[4-5] Introduce secondary bitmap, corresponding to the backup bitmap
PATCH[6-8] Enable dirty ring for hw/arm/virt
Testing
=======
(1) kvm-unit-tests/its-pending-migration and kvm-unit-tests/its-migration with
dirty ring or normal dirty page tracking mechanism. All test cases passed.
QEMU=./qemu.main/build/qemu-system-aarch64 ACCEL=kvm \
./its-pending-migration
QEMU=./qemu.main/build/qemu-system-aarch64 ACCEL=kvm \
./its-migration
QEMU=./qemu.main/build/qemu-system-aarch64 ACCEL=kvm,dirty-ring-size=65536 \
./its-pending-migration
QEMU=./qemu.main/build/qemu-system-aarch64 ACCEL=kvm,dirty-ring-size=65536 \
./its-migration
(2) Combinations of migration, post-copy migration, e1000e and virtio-net
devices. All test cases passed.
-netdev tap,id=net0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
-device e1000e,bus=pcie.5,netdev=net0,mac=52:54:00:f1:26:a0
-netdev tap,id=vnet0,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown \
-device virtio-net-pci,bus=pcie.6,netdev=vnet0,mac=52:54:00:f1:26:b0
Gavin Shan (8):
linux-headers: Update for dirty ring
memory: Add last stage indicator to global dirty log synchronization
migration: Add last stage indicator to global dirty log
synchronization
kvm: Introduce secondary dirty bitmap
kvm: Synchronize secondary bitmap in last stage
kvm: Add helper kvm_dirty_ring_init()
hw/arm/virt: Enable backup bitmap for dirty ring
kvm: Enable dirty ring for arm64
accel/kvm/kvm-all.c | 138 ++++++++++++++++++++++++----------
hw/arm/virt.c | 26 +++++++
include/exec/memory.h | 5 +-
include/sysemu/kvm_int.h | 1 +
linux-headers/asm-arm64/kvm.h | 1 +
linux-headers/linux/kvm.h | 2 +
migration/dirtyrate.c | 4 +-
migration/ram.c | 20 ++---
softmmu/memory.c | 10 +--
target/arm/kvm64.c | 25 ++++++
target/arm/kvm_arm.h | 12 +++
11 files changed, 185 insertions(+), 59 deletions(-)
--
2.23.0
- [PATCH RFCv1 0/8] hw/arm/virt: Support dirty ring,
Gavin Shan <=
- [PATCH RFCv1 1/8] linux-headers: Update for dirty ring, Gavin Shan, 2023/02/06
- [PATCH RFCv1 3/8] migration: Add last stage indicator to global dirty log synchronization, Gavin Shan, 2023/02/06
- [PATCH RFCv1 2/8] memory: 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 5/8] kvm: Synchronize secondary bitmap in last stage, Gavin Shan, 2023/02/06
- [PATCH RFCv1 6/8] kvm: Add helper kvm_dirty_ring_init(), Gavin Shan, 2023/02/06