Re: When is the page table built for migration destination ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux