[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 00/13] migrate/ram: Fix resizing RAM blocks while migrating
From: |
David Hildenbrand |
Subject: |
[PATCH v4 00/13] migrate/ram: Fix resizing RAM blocks while migrating |
Date: |
Tue, 21 Apr 2020 10:52:47 +0200 |
Basically a resend. Who's the lucky winner to pick this up for 5.1? :)
---
This is the follow up of
"[PATCH RFC] memory: Don't allow to resize RAM while migrating" [1]
This series contains some (slightly modified) patches also contained in:
"[PATCH v2 fixed 00/16] Ram blocks with resizable anonymous allocations
under POSIX" [2]
That series will be based on this series. The last patch (#13) in this
series could be moved to the other series, but I decided to include it in
here for now (similar context).
I realized that resizing RAM blocks while the guest is being migrated
(precopy: resize while still running on the source, postcopy: resize
while already running on the target) is buggy. In case of precopy, we
can simply cancel migration. Postcopy handling is more involved. Resizing
can currently happen during a guest reboot, triggered by ACPI rebuilds.
Along with the fixes, some cleanups.
[1] https://lkml.kernel.org/r/address@hidden
[2] https://lkml.kernel.org/r/address@hidden
v3 -> v4:
- Rebased and retested
- Added RBs
v2 -> v3:
- Rebased on current master
- Added RBs
- "migration/ram: Tolerate partially changed mappings in postcopy code"
-- Extended the comment for the uffdio unregister part.
v1 -> v2:
- "util: vfio-helpers: Factor out and fix processing of existing ram
blocks"
-- Stringify error
- "migraton/ram: Handle RAM block resizes during precopy"
-- Simplified check if we're migrating on the source
- "exec: Relax range check in ram_block_discard_range()"
-- Added to make discard during resizes actually work
- "migration/ram: Discard new RAM when growing RAM blocks after
ram_postcopy_incoming_init()"
-- Better checks if in the right postcopy mode.
-- Better patch subject/description/comments
- "migration/ram: Handle RAM block resizes during postcopy"
-- Better comments
-- Adapt to changed postcopy checks
- "migrate/ram: Get rid of "place_source" in ram_load_postcopy()"
-- Dropped, as broken
- "migration/ram: Tolerate partially changed mappings in postcopy code"
-- Better comment / description. Clarify that no implicit wakeup will
happen
-- Warn on EINVAL (older kernels)
-- Wake up any waiter explicitly
David Hildenbrand (13):
util: vfio-helpers: Factor out and fix processing of existing ram
blocks
stubs/ram-block: Remove stubs that are no longer needed
numa: Teach ram block notifiers about resizeable ram blocks
numa: Make all callbacks of ram block notifiers optional
migration/ram: Handle RAM block resizes during precopy
exec: Relax range check in ram_block_discard_range()
migration/ram: Discard RAM when growing RAM blocks after
ram_postcopy_incoming_init()
migration/ram: Simplify host page handling in ram_load_postcopy()
migration/ram: Consolidate variable reset after placement in
ram_load_postcopy()
migration/ram: Handle RAM block resizes during postcopy
migration/multifd: Print used_length of memory block
migration/ram: Use offset_in_ramblock() in range checks
migration/ram: Tolerate partially changed mappings in postcopy code
exec.c | 25 +++++--
hw/core/numa.c | 41 +++++++++--
hw/i386/xen/xen-mapcache.c | 7 +-
include/exec/cpu-common.h | 1 +
include/exec/memory.h | 10 +--
include/exec/ramblock.h | 10 +++
include/exec/ramlist.h | 13 ++--
migration/migration.c | 9 ++-
migration/migration.h | 1 +
migration/multifd.c | 2 +-
migration/postcopy-ram.c | 54 +++++++++++++-
migration/ram.c | 144 ++++++++++++++++++++++++++++---------
stubs/ram-block.c | 20 ------
target/i386/hax-mem.c | 5 +-
target/i386/sev.c | 18 ++---
util/vfio-helpers.c | 41 ++++-------
16 files changed, 283 insertions(+), 118 deletions(-)
--
2.25.1
- [PATCH v4 00/13] migrate/ram: Fix resizing RAM blocks while migrating,
David Hildenbrand <=
- [PATCH v4 01/13] util: vfio-helpers: Factor out and fix processing of existing ram blocks, David Hildenbrand, 2020/04/21
- [PATCH v4 03/13] numa: Teach ram block notifiers about resizeable ram blocks, David Hildenbrand, 2020/04/21
- [PATCH v4 04/13] numa: Make all callbacks of ram block notifiers optional, David Hildenbrand, 2020/04/21
- [PATCH v4 05/13] migration/ram: Handle RAM block resizes during precopy, David Hildenbrand, 2020/04/21
- [PATCH v4 02/13] stubs/ram-block: Remove stubs that are no longer needed, David Hildenbrand, 2020/04/21
- [PATCH v4 06/13] exec: Relax range check in ram_block_discard_range(), David Hildenbrand, 2020/04/21
- [PATCH v4 07/13] migration/ram: Discard RAM when growing RAM blocks after ram_postcopy_incoming_init(), David Hildenbrand, 2020/04/21
- [PATCH v4 08/13] migration/ram: Simplify host page handling in ram_load_postcopy(), David Hildenbrand, 2020/04/21
- [PATCH v4 09/13] migration/ram: Consolidate variable reset after placement in ram_load_postcopy(), David Hildenbrand, 2020/04/21