qemu/include
Dr. David Alan Gilbert aa777e297c cpu_physical_memory_sync_dirty_bitmap: Another alignment fix
This code has an optimised, word aligned version, and a boring
unaligned version. My commit f70d345 fixed one alignment issue, but
there's another.

The optimised version operates on 'longs' dealing with (typically) 64
pages at a time, replacing the whole long by a 0 and counting the bits.
If the Ramblock is less than 64bits in length that long can contain bits
representing two different RAMBlocks, but the code will update the
bmap belinging to the 1st RAMBlock only while having updated the total
dirty page count for both.

This probably didn't matter prior to 6b6712ef which split the dirty
bitmap by RAMBlock, but now they're separate RAMBlocks we end up
with a count that doesn't match the state in the bitmaps.

Symptom:
  Migration showing a few dirty pages left to be sent constantly
  Seen on aarch64 and x86 with x86+ovmf

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reported-by: Wei Huang <wei@redhat.com>
Fixes: 6b6712efcc
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2018-01-16 14:54:52 +01:00
..
block nbd: rename nbd_option and nbd_opt_reply 2018-01-10 12:11:23 -06:00
chardev chardev: introduce qemu_chr_timeout_add_ms() 2018-01-12 13:22:02 +01:00
crypto block: convert qcrypto_block_encrypt|decrypt to take bytes offset 2017-10-06 16:30:47 +02:00
disas target/xtensa: implement disassembler 2018-01-09 09:55:39 -08:00
exec cpu_physical_memory_sync_dirty_bitmap: Another alignment fix 2018-01-16 14:54:52 +01:00
fpu configure: Drop ancient Solaris 9 and earlier support 2017-07-21 15:04:05 +01:00
hw hpet: recover timer offset correctly 2018-01-12 13:22:02 +01:00
io io: introduce a network socket listener API 2017-12-15 15:07:26 +00:00
libdecnumber
migration migration: check pre_save return in vmstate_save_state 2017-09-27 11:36:31 +01:00
monitor block: rip out all traces of password prompting 2017-07-11 17:44:56 +02:00
net net: Remove the legacy "-net channel" parameter 2017-12-22 10:05:26 +08:00
qapi qapi: Add qobject_is_equal() 2017-11-17 18:21:30 +01:00
qemu readline: add a free function 2018-01-16 14:54:50 +01:00
qom i386: hvf: add code base from Google's QEMU repository 2017-12-22 15:01:20 +01:00
scsi scsi: provide general-purpose functions to manage sense data 2017-12-21 09:30:32 +01:00
standard-headers linux-headers: update to 4.15-rc1 2017-12-13 17:59:23 +00:00
sysemu i386: hvf: implement vga dirty page tracking 2017-12-22 15:01:48 +01:00
ui ui: generate qcode to linux mappings 2017-12-14 15:24:30 -08:00
elf.h tcg/s390: Use constant pool for movi 2017-09-07 11:57:35 -07:00
glib-compat.h glib-compat: move G_SOURCE_CONTINUE/REMOVE there 2017-10-10 16:33:55 +02:00
qemu-common.h Use HTTPS for qemu.org and other domains 2017-11-21 13:34:13 +00:00
qemu-io.h hmp: Request permissions in qemu-io 2017-02-28 20:47:50 +01:00
trace-tcg.h