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