qemu-patch-raspberry4/include/exec
David Hildenbrand 898ba906cc migration/ram: Handle RAM block resizes during postcopy
Resizing while migrating is dangerous and does not work as expected.
The whole migration code works with the usable_length of a ram block and
does not expect this value to change at random points in time.

In the case of postcopy, relying on used_length is racy as soon as the
guest is running. Also, when used_length changes we might leave the
uffd handler registered for some memory regions, reject valid pages
when migrating and fail when sending the recv bitmap to the source.

Resizing can be trigger *after* (but not during) a reset in
ACPI code by the guest
- hw/arm/virt-acpi-build.c:acpi_ram_update()
- hw/i386/acpi-build.c:acpi_ram_update()

Let's remember the original used_length in a separate variable and
use it in relevant postcopy code. Make sure to update it when we resize
during precopy, when synchronizing the RAM block sizes with the source.

Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20210429112708.12291-9-david@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
2021-05-13 18:21:14 +01:00
..
user nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
address-spaces.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
confidential-guest-support.h confidential guest support: Introduce cgs "ready" flag 2021-02-08 16:57:38 +11:00
cpu-all.h exec: Fix overlap of PAGE_ANON and PAGE_TARGET_1 2021-04-12 11:06:24 +01:00
cpu-common.h util: vfio-helpers: Factor out and fix processing of existing ram blocks 2021-05-13 18:21:13 +01:00
cpu-defs.h exec/cpu-defs: Remove TCG backends dependency 2021-02-05 10:24:14 -10:00
cpu_ldst.h exec: Rename guest_{addr,range}_valid to *_untagged 2021-02-16 11:04:53 +00:00
cputlb.h overall/alpha tcg cpus|hppa: Fix Lesser GPL version number 2020-11-15 16:43:54 +01:00
exec-all.h accel/tcg: Precompute curr_cflags into cpu->tcg_cflags 2021-03-06 11:53:57 -08:00
gdbstub.h gdbstub: Remove unused gdb_get_float32() and gdb_get_float64() 2021-02-15 09:38:47 +00:00
gen-icount.h tcg: Use tcg_constant_i32 with icount expander 2021-01-13 08:39:08 -10:00
helper-gen.h exec: Remove accel/tcg/ from include paths 2021-05-01 11:44:13 -07:00
helper-head.h tcg: Add support for a helper with 7 arguments 2020-02-11 16:29:16 -08:00
helper-proto.h exec: Remove accel/tcg/ from include paths 2021-05-01 11:44:13 -07:00
helper-tcg.h exec: Remove accel/tcg/ from include paths 2021-05-01 11:44:13 -07:00
hwaddr.h move MemMapEntry 2020-09-30 11:29:56 +02:00
ioport.h nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
log.h tcg: Introduce tcg_splitwx_to_{rx,rw} 2021-01-07 05:09:41 -10:00
memattrs.h cputlb: Byte swap memory transaction attribute 2019-09-03 08:30:39 -07:00
memop.h cputlb: Replace size and endian operands for MemOp 2019-09-03 08:30:39 -07:00
memory-internal.h cputlb: Merge and move memory_notdirty_write_{prepare,complete} 2019-09-25 10:44:29 -07:00
memory.h migration/ram: Handle RAM block resizes during precopy 2021-05-13 18:21:13 +01:00
memory_ldst.h.inc nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
memory_ldst_cached.h.inc fuzz: ignore address_space_map is_write flag 2021-02-08 14:43:54 +01:00
memory_ldst_phys.h.inc nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
page-vary.h exec: Build page-vary-common.c with -fno-lto 2021-03-23 19:36:47 -06:00
plugin-gen.h accel/tcg: allow plugin instrumentation to be disable via cflags 2021-02-18 08:19:23 +00:00
poison.h * Add some missing gitlab-CI job dependencies 2021-03-10 17:22:45 +00:00
ram_addr.h memory: alloc RAM from file at offset 2021-02-09 20:53:56 +00:00
ramblock.h migration/ram: Handle RAM block resizes during postcopy 2021-05-13 18:21:14 +01:00
ramlist.h numa: Teach ram block notifiers about resizeable ram blocks 2021-05-13 18:21:13 +01:00
softmmu-semi.h include: Make headers more self-contained 2019-08-16 13:31:51 +02:00
target_page.h migration: Make savevm.c target independent 2017-05-18 19:21:00 +02:00
tb-context.h exec: Move TranslationBlock typedef to qemu/typedefs.h 2021-02-18 08:19:08 +00:00
tb-hash.h overall/alpha tcg cpus|hppa: Fix Lesser GPL version number 2020-11-15 16:43:54 +01:00
tb-lookup.h accel/tcg: drop the use of CF_HASH_MASK and rename params 2021-03-06 11:52:06 -08:00
translate-all.h remove TCG includes from common code 2021-01-02 21:03:36 +01:00
translator.h tcg: Make DisasContextBase.tb const 2021-01-07 05:09:41 -10:00