• I
    xen: correctly rebuild mfn list list after migration. · 375b2a9a
    Ian Campbell 提交于
    Otherwise the second migration attempt fails because the mfn_list_list
    still refers to all the old mfns.
    
    We need to update the entires in both p2m_top_mfn and the mid_mfn
    pages which p2m_top_mfn refers to.
    
    In order to do this we need to keep track of the virtual addresses
    mapping the p2m_mid_mfn pages since we cannot rely on
    mfn_to_virt(p2m_top_mfn[idx]) since p2m_top_mfn[idx] will still
    contain the old MFN after a migration, which may now belong to another
    domain and hence have a different mapping in the m2p.
    
    Therefore add and maintain a third top level page, p2m_top_mfn_p[],
    which tracks the virtual addresses of the mfns contained in
    p2m_top_mfn[].
    
    We also need to update the content of the p2m_mid_missing_mfn page on
    resume to refer to the page's new mfn.
    
    p2m_missing does not need updating since the migration process takes
    care of the leaf p2m pages for us.
    Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
    Signed-off-by: NJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    375b2a9a
mmu.c 63.9 KB