• Rafael J. Wysocki's avatar
    [PATCH] swsusp: use less memory during resume · 968808b8
    Rafael J. Wysocki authored
    Make swsusp allocate only as much memory as needed to store the image data
    and metadata during resume.
    
    Without this patch swsusp additionally allocates many page frames that will
    conflict with the "original" locations of the image data and are considered
    as "unsafe", treating them as "eaten" pages (ie.  allocated but unusable).
    
    The patch makes swsusp allocate as many pages as it'll need to store the
    data read from the image in one shot, creating a list of allocated "safe"
    pages, and use the observation that all pages allocated by it are marked
    with the PG_nosave and PG_nosave_free flags set.   Namely, when it's about
    to load an image page, swsusp can check whether the page frame
    corresponding to the "original" location of this page has been allocated
    (ie.  if the page frame has the PG_nosave and PG_nosave_free flags set) and
    if so, it can load the page directly into this page frame.   Otherwise it
    uses an allocated "safe" page from the list to store the data that will be
    copied to their "original" location later on.
    
    This allows us to save many page copyings and page allocations during
    resume and in the future it may allow us to load images greater than 50% of
    the normal zone.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Acked-by: default avatar"Pavel Machek" <pavel@suse.cz>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    968808b8
snapshot.c 23.2 KB