Thanks Paolo. I am using KVM with EPT support, so I understand this will require gfn->pfn translation. Going through the code, looks like function tdp_page_fault() is responsible for setting up this mapping. Though the page table is constructed lazily, I understand the page contents are already transferred during migration. Can you please explain or point to function names which finds the correct page contents for given gfn ? (looks like pte is created in __direct_map()) -- Sunil On Mon, Sep 9, 2013 at 1:14 AM, Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > Il 09/09/2013 07:27, qna ha scritto: >> Hello List, >> >> I am trying to understand kvm memory management code related to VM >> migration. From the code, it looks like during guest VM migration, all the >> memory of the guest is transferred from source to destination, but does it >> copy the source page tables to destination ? >> >> A certain GFN(guest frame/physical number) X can be mapped to to PFN Y in >> source but it is not necessary to map that GFN to PFN Y at destination. >> Thus it should not make sense to copy page tables. But then, KVM should >> build page tables when entire memory is copied(because current >> implementation is precopy). >> >> I added prinks in code and looks like at destination it fault, there are no >> page tables created. But the memory is. Is this understanding correct ? Can >> anyone explain which part of code is doing this page table building ? > > The guest's page tables that do the gva->gfn (guest virtual > address->guest frame number) translation are in guest memory, so they > are obviously migrated together with the memory. > > As the guest runs, KVM builds page tables that do either gfn->pfn > translation (if nested page tables are in use) or a combined gva->pfn > translation (these are called "shadow page tables"). These page tables > are internal to KVM and they are built lazily as the guest runs. To do > this, KVM intercepts page faults, then: > > * if the entry for the GFN doesn't exist in the KVM page tables, it > builds the entry and retries > > * if the entry for the GFN exists, it passes the page fault to the guest. > > Paolo > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html