All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/6] hw/arm/virt: Support dirty ring
@ 2023-02-13  0:39 Gavin Shan
  2023-02-13  0:39 ` [PATCH v1 1/6] linux-headers: Update for " Gavin Shan
                   ` (6 more replies)
  0 siblings, 7 replies; 25+ messages in thread
From: Gavin Shan @ 2023-02-13  0:39 UTC (permalink / raw)
  To: qemu-arm
  Cc: qemu-devel, pbonzini, peter.maydell, peterx, david, philmd, mst,
	cohuck, quintela, dgilbert, maz, zhenyzha, shan.gavin

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]    Introduce indicator of the last stage migration and pass it
            all the way down
PATCH[3]    Synchronize the backup bitmap in the last stage of live migration
PATCH[4]    Introduce helper kvm_dirty_ring_init() to enable the dirty ring
PATCH[5-6]  Enable dirty ring for hw/arm/virt

RFCv1: https://lists.nongnu.org/archive/html/qemu-arm/2023-02/msg00171.html

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

Changelog
=========
v1:
  * Combine two patches into one PATCH[v1 2/6] for the last stage indicator    (Peter)
  * Drop the secondary bitmap and use the original one directly                (Juan)
  * Avoid "goto out" in helper kvm_dirty_ring_init()                           (Juan)


Gavin Shan (6):
  linux-headers: Update for dirty ring
  migration: Add last stage indicator to global dirty log
    synchronization
  kvm: Synchronize the backup bitmap in the 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           | 95 ++++++++++++++++++++++++-----------
 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, 152 insertions(+), 49 deletions(-)

-- 
2.23.0



^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2023-02-24 10:20 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-13  0:39 [PATCH v1 0/6] hw/arm/virt: Support dirty ring Gavin Shan
2023-02-13  0:39 ` [PATCH v1 1/6] linux-headers: Update for " Gavin Shan
2023-02-21 16:30   ` Peter Maydell
2023-02-21 23:18     ` Gavin Shan
2023-02-22  8:49       ` Cornelia Huck
2023-02-22  9:03         ` Gavin Shan
2023-02-13  0:39 ` [PATCH v1 2/6] migration: Add last stage indicator to global dirty log synchronization Gavin Shan
2023-02-21 17:36   ` Peter Xu
2023-02-21 23:20     ` Gavin Shan
2023-02-13  0:39 ` [PATCH v1 3/6] kvm: Synchronize the backup bitmap in the last stage Gavin Shan
2023-02-21 17:46   ` Peter Xu
2023-02-21 23:44     ` Gavin Shan
2023-02-21 23:58       ` Peter Xu
2023-02-22  6:06         ` Gavin Shan
2023-02-13  0:39 ` [PATCH v1 4/6] kvm: Add helper kvm_dirty_ring_init() Gavin Shan
2023-02-21 20:12   ` Peter Xu
2023-02-13  0:39 ` [PATCH v1 5/6] hw/arm/virt: Enable backup bitmap for dirty ring Gavin Shan
2023-02-21 16:27   ` Peter Maydell
2023-02-22  4:35     ` Gavin Shan
2023-02-22 15:54       ` Peter Maydell
2023-02-23  0:52         ` Gavin Shan
2023-02-23 11:51           ` Peter Maydell
2023-02-24 10:19             ` Gavin Shan
2023-02-13  0:39 ` [PATCH v1 6/6] kvm: Enable dirty ring for arm64 Gavin Shan
2023-02-17  1:59 ` [PATCH v1 0/6] hw/arm/virt: Support dirty ring Zhenyu Zhang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.