On 03/23/2016 09:53 AM, Paolo Bonzini wrote:
On 23/03/2016 17:47, Hollis Blanchard wrote:
Paolo, is it true that only TB-invalidating writes go through the
io_mem_notdirty path? I'm looking at the live migration code now, and it
seems like every memory write will go through that path when global
dirty memory logging is enabled.
When live migration is enabled, writes to clean memory (almost all of
them) will go through that path indeed. Some writes to the framebuffer
will go through that path too.
It depends on
cpu_physical_memory_is_clean(
memory_region_get_ram_addr(section->mr) + xlat))
in tlb_set_page_with_attrs.
I'm guessing that when live migration starts (ram_save_setup), the TLB
must be flushed so that new entries can be created with the TLB_NOTDIRTY
flag. Otherwise, pre-migration entries without TLB_NOTDIRTY flag could
live on, allowing the TBs to directly modify guest RAM without tracking,
right?
I can't find anything underneath ram_save_setup() that does this,
though. Am I just missing it?
--
Hollis Blanchard <hollis_blanch...@mentor.com>
Mentor Graphics Emulation Division