--- v1
+++ v4
@@ -7,27 +7,59 @@
the memory footprint from 90k to ~2.6k bytes.
The changes required to support dynamic sizing are relatively small,
-e.g. are essentially contained in patches 12/13 and 13/13. Patches 1-11
-clean up the memslot code, which has gotten quite crusy, especially
-__kvm_set_memory_region(). The clean up is likely not strictly necessary
-to switch to dynamic sizing, but I didn't have a remotely reasonable
-level of confidence in the correctness of the dynamic sizing without first
-doing the clean up.
+e.g. are essentially contained in patches 17/19 and 18/19.
-Testing, especially non-x86 platforms, would be greatly appreciated. I'd
-really like to get at least one Tested-by from all architectures. The
-non-x86 changes are for all intents and purposes untested, e.g. I compile
-tested pieces of the code by copying them into x86, but that's it. In
-theory, the vast majority of the functional changes are arch agnostic, in
-theory...
+Patches 2-16 clean up the memslot code, which has gotten quite crusty,
+especially __kvm_set_memory_region(). The clean up is likely not strictly
+necessary to switch to dynamic sizing, but I didn't have a remotely
+reasonable level of confidence in the correctness of the dynamic sizing
+without first doing the clean up.
-Sean Christopherson (13):
+The only functional change in v4 is the addition of an x86-specific bug
+fix in x86's handling of KVM_MR_MOVE. The bug fix is not directly related
+to dynamically allocating memslots, but it has subtle and hidden conflicts
+with the cleanup patches, and the fix is higher priority than anything
+else in the series, i.e. should be merged first.
+
+On non-x86 architectures, v3 and v4 should be functionally equivalent,
+the only non-x86 change in v4 is the dropping of a "const" in
+kvm_arch_commit_memory_region().
+
+v4:
+ - Add patch 01 to fix an x86 rmap/lpage bug, and patches 10 and 11 to
+ resolve hidden conflicts with the bug fix.
+ - Collect tags [Christian, Marc, Philippe].
+ - Rebase to kvm/queue, commit e41a90be9659 ("KVM: x86/mmu: WARN if
+ root_hpa is invalid when handling a page fault").
+v3:
+ - Fix build errors on PPC and MIPS due to missed params during
+ refactoring [kbuild test robot].
+ - Rename the helpers for update_memslots() and add comments describing
+ the new algorithm and how it interacts with searching [Paolo].
+ - Remove the unnecessary and obnoxious warning regarding memslots being
+ a flexible array [Paolo].
+ - Fix typos in the changelog of patch 09/15 [Christoffer].
+ - Collect tags [Christoffer].
+
+v2:
+ - Split "Drop kvm_arch_create_memslot()" into three patches to move
+ minor functional changes to standalone patches [Janosch].
+ - Rebase to latest kvm/queue (f0574a1cea5b, "KVM: x86: fix ...")
+ - Collect an Acked-by and a Reviewed-by
+
+Sean Christopherson (19):
+ KVM: x86: Allocate new rmap and large page tracking when moving
+ memslot
KVM: Reinstall old memslots if arch preparation fails
+ KVM: Don't free new memslot if allocation of said memslot fails
KVM: PPC: Move memslot memory allocation into prepare_memory_region()
KVM: x86: Allocate memslot resources during prepare_memory_region()
KVM: Drop kvm_arch_create_memslot()
+ KVM: Explicitly free allocated-but-unused dirty bitmap
KVM: Refactor error handling for setting memory region
KVM: Move setting of memslot into helper routine
+ KVM: Drop "const" attribute from old memslot in commit_memory_region()
+ KVM: x86: Free arrays for old memslot when moving memslot's base gfn
KVM: Move memslot deletion to helper function
KVM: Simplify kvm_free_memslot() and all its descendents
KVM: Clean up local variable usage in __kvm_set_memory_region()
@@ -35,26 +67,33 @@
KVM: Ensure validity of memslot with respect to kvm_get_dirty_log()
KVM: Terminate memslot walks via used_slots
KVM: Dynamically size memslot array based on number of used slots
+ KVM: selftests: Add test for KVM_SET_USER_MEMORY_REGION
- arch/mips/include/asm/kvm_host.h | 2 +-
- arch/mips/kvm/mips.c | 68 +---
- arch/powerpc/include/asm/kvm_ppc.h | 14 +-
- arch/powerpc/kvm/book3s.c | 22 +-
- arch/powerpc/kvm/book3s_hv.c | 36 +-
- arch/powerpc/kvm/book3s_pr.c | 20 +-
- arch/powerpc/kvm/booke.c | 17 +-
- arch/powerpc/kvm/powerpc.c | 13 +-
- arch/s390/include/asm/kvm_host.h | 2 +-
- arch/s390/kvm/kvm-s390.c | 21 +-
- arch/x86/include/asm/kvm_page_track.h | 3 +-
- arch/x86/kvm/page_track.c | 15 +-
- arch/x86/kvm/x86.c | 100 ++---
- include/linux/kvm_host.h | 48 +--
- virt/kvm/arm/arm.c | 47 +--
- virt/kvm/arm/mmu.c | 18 +-
- virt/kvm/kvm_main.c | 546 ++++++++++++++++----------
- 17 files changed, 467 insertions(+), 525 deletions(-)
+ arch/mips/include/asm/kvm_host.h | 2 +-
+ arch/mips/kvm/mips.c | 71 +-
+ arch/powerpc/include/asm/kvm_ppc.h | 17 +-
+ arch/powerpc/kvm/book3s.c | 22 +-
+ arch/powerpc/kvm/book3s_hv.c | 36 +-
+ arch/powerpc/kvm/book3s_pr.c | 20 +-
+ arch/powerpc/kvm/booke.c | 17 +-
+ arch/powerpc/kvm/powerpc.c | 15 +-
+ arch/s390/include/asm/kvm_host.h | 2 +-
+ arch/s390/kvm/kvm-s390.c | 23 +-
+ arch/x86/include/asm/kvm_page_track.h | 3 +-
+ arch/x86/kvm/mmu/page_track.c | 15 +-
+ arch/x86/kvm/x86.c | 114 +---
+ include/linux/kvm_host.h | 48 +-
+ tools/testing/selftests/kvm/.gitignore | 1 +
+ tools/testing/selftests/kvm/Makefile | 3 +
+ .../testing/selftests/kvm/include/kvm_util.h | 1 +
+ tools/testing/selftests/kvm/lib/kvm_util.c | 30 +
+ .../selftests/kvm/set_memory_region_test.c | 142 ++++
+ virt/kvm/arm/arm.c | 48 +-
+ virt/kvm/arm/mmu.c | 20 +-
+ virt/kvm/kvm_main.c | 621 ++++++++++++------
+ 22 files changed, 736 insertions(+), 535 deletions(-)
+ create mode 100644 tools/testing/selftests/kvm/set_memory_region_test.c
--
-2.22.0
+2.24.1