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

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

 



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




[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