Skip to content
  • Ian Campbell's avatar
    xen: correctly restore pfn_to_mfn_list_list after resume · fa24ba62
    Ian Campbell authored
    pvops kernels >= 2.6.30 can currently only be saved and restored once. The
    second attempt to save results in:
    
        ERROR Internal error: Frame# in pfn-to-mfn frame list is not in pseudophys
        ERROR Internal error: entry 0: p2m_frame_list[0] is 0xf2c2c2c2, max 0x120000
        ERROR Internal error: Failed to map/save the p2m frame list
    
    I finally narrowed it down to:
    
        commit cdaead6b
    
    
            Author: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
            Date:   Fri Feb 27 15:34:59 2009 -0800
    
                xen: split construction of p2m mfn tables from registration
    
                Build the p2m_mfn_list_list early with the rest of the p2m table, but
                register it later when the real shared_info structure is in place.
    
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    
    The unforeseen side-effect of this change was to cause the mfn list list to not
    be rebuilt on resume. Prior to this change it would have been rebuilt via
    xen_post_suspend() -> xen_setup_shared_info() -> xen_setup_mfn_list_list().
    
    Fix by explicitly calling xen_build_mfn_list_list() from xen_post_suspend().
    
    Signed-off-by: default avatarIan Campbell <ian.campbell@citrix.com>
    Signed-off-by: default avatarJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Cc: Stable Kernel <stable@kernel.org>
    fa24ba62