linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v11 0/6] arm: dirty page logging support for ARMv7
@ 2014-09-23  0:54 Mario Smarduch
  2014-09-23  0:54 ` [PATCH v11 1/6] KVM: Add architecture-specific TLB flush implementations Mario Smarduch
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Mario Smarduch @ 2014-09-23  0:54 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds support for ARMv7 dirty page logging. Some functions of dirty
page logging have been split to generic and arch specific implementations,
details below. Dirty page logging is one of serveral features required for
live migration, live migration has been tested for ARMv7.

Testing:
- 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 and memory test.
- x86_64 QEMU basic migration on same platform.

See https://github.com/mjsmar/arm-migration-howto for details testing and
setup (see 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 support overivew-
- initially write protects VM RAM memory regions - 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.
- In the event migration is canceled, normal behavior is resumed huge pages
  are rebuilt over time.

- Future Work 
  o Completed ARMv8 additions - need to validate, on hardware juno
  o ARMv8 Validation test - with no migration support yet, implement  
    replication of memory DB using dirty page logging in HA environment. 

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-specific TLB flush implementations
  KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log
  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                  |    1 +
 arch/arm/kvm/arm.c                    |   13 ++-
 arch/arm/kvm/interrupts.S             |   12 ++
 arch/arm/kvm/mmu.c                    |  196 ++++++++++++++++++++++++++++++++-
 arch/arm64/kvm/Kconfig                |    1 +
 arch/ia64/kvm/Kconfig                 |    1 +
 arch/ia64/kvm/kvm-ia64.c              |    2 +-
 arch/mips/kvm/Kconfig                 |    1 +
 arch/mips/kvm/mips.c                  |    2 +-
 arch/powerpc/kvm/Kconfig              |    1 +
 arch/powerpc/kvm/book3s.c             |    2 +-
 arch/powerpc/kvm/booke.c              |    2 +-
 arch/s390/kvm/Kconfig                 |    1 +
 arch/s390/kvm/kvm-s390.c              |    2 +-
 arch/x86/kvm/x86.c                    |   86 ---------------
 include/linux/kvm_host.h              |    7 ++
 virt/kvm/Kconfig                      |    6 +
 virt/kvm/kvm_main.c                   |   95 ++++++++++++++++
 22 files changed, 369 insertions(+), 98 deletions(-)

-- 
1.7.9.5

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

end of thread, other threads:[~2014-10-15 11:21 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-23  0:54 [PATCH v11 0/6] arm: dirty page logging support for ARMv7 Mario Smarduch
2014-09-23  0:54 ` [PATCH v11 1/6] KVM: Add architecture-specific TLB flush implementations Mario Smarduch
2014-10-15 11:17   ` Alexander Graf
2014-09-23  0:54 ` [PATCH v11 2/6] KVM: Add generic implementation of kvm_vm_ioctl_get_dirty_log Mario Smarduch
2014-09-29 13:36   ` Christoffer Dall
2014-09-29 17:18   ` Cornelia Huck
2014-09-29 18:02     ` Mario Smarduch
2014-10-15 11:21   ` Alexander Graf
2014-09-23  0:54 ` [PATCH v11 3/6] arm: KVM: Add ARMv7 API to flush TLBs Mario Smarduch
2014-09-23  0:54 ` [PATCH v11 4/6] arm: KVM: Add initial dirty page locking infrastructure Mario Smarduch
2014-09-23  0:54 ` [PATCH v11 5/6] arm: KVM: dirty log read write protect support Mario Smarduch
2014-09-23  0:54 ` [PATCH v11 6/6] arm: KVM: ARMv7 dirty page logging 2nd stage page fault Mario Smarduch
2014-09-29 13:35   ` Christoffer Dall
2014-09-29 21:03     ` Mario Smarduch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).