|
From: | Hollis Blanchard |
Subject: | Re: [Qemu-devel] io_mem_notdirty and live migration |
Date: | Thu, 24 Mar 2016 12:30:01 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 |
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 <address@hidden> Mentor Graphics Emulation Division
[Prev in Thread] | Current Thread | [Next in Thread] |