qemu-e2k/include/exec
Nicholas Piggin 03bfc2188f physmem: Fix migration dirty bitmap coherency with TCG memory access
The fastpath in cpu_physical_memory_sync_dirty_bitmap() to test large
aligned ranges forgot to bring the TCG TLB up to date after clearing
some of the dirty memory bitmap bits. This can result in stores though
the TCG TLB not setting the dirty memory bitmap and ultimately causes
memory corruption / lost updates during migration from a TCG host.

Fix this by calling cpu_physical_memory_dirty_bits_cleared() when
dirty bits have been cleared.

Fixes: aa8dc04477 ("migration: synchronize memory bitmap 64bits at a time")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240219061731.232570-1-npiggin@gmail.com>
[PMD: Split patch in 2: part 2/2, slightly adapt description]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Link: https://lore.kernel.org/r/20240312201458.79532-4-philmd@linaro.org
Signed-off-by: Peter Xu <peterx@redhat.com>
2024-03-12 17:39:40 -04:00
..
user
address-spaces.h
confidential-guest-support.h
cpu_ldst.h include/exec: typedef abi_ptr to vaddr 2024-01-29 07:06:03 +10:00
cpu-all.h accel/tcg: Add TLB_CHECK_ALIGNED 2024-03-05 13:22:56 +00:00
cpu-common.h cpu: Remove page_size_init 2024-02-29 11:35:37 -10:00
cpu-defs.h accel/tcg: Move CPUTLB definitions from cpu-defs.h 2023-10-03 08:01:02 -07:00
cputlb.h accel/tcg: Move HMP info jit and info opcount code 2023-11-06 08:27:21 -08:00
exec-all.h physmem: Expose tlb_reset_dirty_range_all() 2024-03-12 17:39:40 -04:00
gdbstub.h gdbstub: expose api to find registers 2024-02-28 09:11:42 +00:00
helper-gen-common.h
helper-gen.h
helper-gen.h.inc
helper-head.h
helper-info.c.inc
helper-proto-common.h
helper-proto.h
helper-proto.h.inc
hwaddr.h
ioport.h exec/ioport: Add portio_list_set_enabled() 2024-02-14 06:09:32 -05:00
log.h
memattrs.h accel/tcg: Add tlb_fill_flags to CPUTLBEntryFull 2024-03-05 13:22:56 +00:00
memop.h
memopidx.h
memory_ldst_cached.h.inc
memory_ldst_phys.h.inc
memory_ldst.h.inc
memory-internal.h
memory.h include/exec/memory.h: correct typos 2024-02-21 08:16:43 +03:00
page-vary.h
plugin-gen.h plugins: Set final instruction count in plugin_gen_tb_end 2023-10-11 08:46:39 +01:00
poison.h
ram_addr.h physmem: Fix migration dirty bitmap coherency with TCG memory access 2024-03-12 17:39:40 -04:00
ramblock.h migration/ram: Add outgoing 'mapped-ram' migration 2024-03-01 15:42:04 +08:00
ramlist.h
replay-core.h
target_long.h tcg: Define MO_TL 2023-10-22 16:34:21 -07:00
target_page.h
tb-flush.h accel/tcg: Declare tcg_flush_jmp_cache() in 'exec/tb-flush.h' 2023-11-07 12:13:27 +01:00
tlb-common.h
translate-all.h accel/tcg: Remove tb_invalidate_phys_page() from system emulation 2024-01-19 12:28:59 +01:00
translation-block.h tcg: Make tb_cflags() usable from target-agnostic code 2024-01-29 21:04:10 +10:00
translator.h include/exec: Use vaddr in DisasContextBase for virtual addresses 2024-01-29 07:06:03 +10:00
tswap.h
vaddr.h include/exec: Move vaddr defines to separate file 2024-01-29 07:06:03 +10:00