On 10/30/2014 05:11 AM, Christian Borntraeger wrote: > Am 23.10.2014 00:34, schrieb Mario Smarduch: >> This patch series introduces dirty page logging for ARMv7 and adds some degree >> of generic dirty logging support for x86, armv7 and later armv8. >> >> I implemented Alex's suggestion after he took a look at the patches at kvm >> forum to simplify the generic/arch split - leaving mips, powerpc, s390, >> (ia64 although broken) unchanged. x86/armv7 now share some dirty logging code. >> armv8 dirty log patches have been posted and tested but for time being armv8 >> is non-generic as well. >> >> I briefly spoke to most of you at kvm forum, and this is the patch series >> I was referring to. Implementation changed from previous version (patches >> 1 & 2), those who acked previous revision, please review again. >> >> Last 4 patches (ARM) have been rebased for newer kernel, with no signifcant >> changes. >> >> Testing: >> - Generally live migration + checksumming of source/destination memory regions >> is used validate correctness. >> - qemu machvirt, VExpress - Exynos 5440, FastModels - lmbench + dirty guest >> memory cycling. >> - ARMv8 Foundation Model/kvmtool - Due to slight overlap in 2nd stage handlers >> did a basic bringup using qemu. >> - x86_64 qemu default machine model, tested migration on HP Z620, tested >> convergence for several dirty page rates >> >> See https://github.com/mjsmar/arm-dirtylog-tests >> - Dirtlogtest-setup.pdf for ARMv7 >> - https://github.com/mjsmar/arm-dirtylog-tests/tree/master/v7 - README >> >> The patch affects armv7,armv8, mips, ia64, powerpc, s390, x86_64. Patch >> series has been compiled for affected architectures: >> >> - x86_64 - defconfig >> - ia64 - ia64-linux-gcc4.6.3 - defconfig, ia64 Kconfig defines BROKEN worked >> around that to make sure new changes don't break build. Eventually build >> breaks due to other reasons. >> - mips - mips64-linux-gcc4.6.3 - malta_kvm_defconfig >> - ppc - powerpc64-linux-gcc4.6.3 - pseries_defconfig >> - s390 - s390x-linux-gcc4.6.3 - defconfig >> - armv8 - aarch64-linux-gnu-gcc4.8.1 - defconfig >> >> ARMv7 Dirty page logging implementation overivew- >> - initially write protects VM RAM memory region - 2nd stage page tables >> - add support to read dirty page log and again write protect the dirty pages >> - second stage page table for next pass. >> - second stage huge page are dissolved into small page tables to keep track of >> dirty pages at page granularity. Tracking at huge page granularity limits >> migration to an almost idle system. Small page size logging supports higher >> memory dirty rates. >> - In the event migration is canceled, normal behavior is resumed huge pages >> are rebuilt over time. >> >> Changes since v11: >> - Implemented Alex's comments to simplify generic layer. >> >> Changes since v10: >> - addressed wanghaibin comments >> - addressed Christoffers comments >> >> Changes since v9: >> - Split patches into generic and architecture specific variants for TLB Flushing >> and dirty log read (patches 1,2 & 3,4,5,6) >> - rebased to 3.16.0-rc1 >> - Applied Christoffers comments. >> >> Mario Smarduch (6): >> KVM: Add architecture-defined TLB flush support >> KVM: Add generic support for dirty page logging >> arm: KVM: Add ARMv7 API to flush TLBs >> arm: KVM: Add initial dirty page locking infrastructure >> arm: KVM: dirty log read write protect support >> arm: KVM: ARMv7 dirty page logging 2nd stage page fault >> >> arch/arm/include/asm/kvm_asm.h | 1 + >> arch/arm/include/asm/kvm_host.h | 14 +++ >> arch/arm/include/asm/kvm_mmu.h | 20 ++++ >> arch/arm/include/asm/pgtable-3level.h | 1 + >> arch/arm/kvm/Kconfig | 2 + >> arch/arm/kvm/Makefile | 1 + >> arch/arm/kvm/arm.c | 2 + >> arch/arm/kvm/interrupts.S | 11 ++ >> arch/arm/kvm/mmu.c | 209 +++++++++++++++++++++++++++++++-- >> arch/x86/include/asm/kvm_host.h | 3 - >> arch/x86/kvm/Kconfig | 1 + >> arch/x86/kvm/Makefile | 1 + >> arch/x86/kvm/x86.c | 86 -------------- >> include/linux/kvm_host.h | 4 + >> virt/kvm/Kconfig | 6 + >> virt/kvm/dirtylog.c | 112 ++++++++++++++++++ >> virt/kvm/kvm_main.c | 2 + >> 17 files changed, 380 insertions(+), 96 deletions(-) >> create mode 100644 virt/kvm/dirtylog.c >> > > Patches 1-3 seem to work fine on s390. The other patches are arm-only (well cant find 5 and 6) so I guess its ok for s390. > The patches are there but threading is broken, due to mail server message threshold rate. Just in case links below https://lists.cs.columbia.edu/pipermail/kvmarm/2014-October/011730.html https://lists.cs.columbia.edu/pipermail/kvmarm/2014-October/011731.html Thanks. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html