On 21.04.20 10:52, David Hildenbrand wrote: > Basically a resend. Who's the lucky winner to pick this up for 5.1? :) >
Gentle ping, I have loads of patches in my backlog, and it does not seem to get any shorter. > --- > > 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/20200213172016.196609-1-da...@redhat.com > [2] https://lkml.kernel.org/r/20200212134254.11073-1-da...@redhat.com > > 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(-) > -- Thanks, David / dhildenb